【问题标题】:Use mysql user in trigger在触发器中使用 mysql 用户
【发布时间】:2009-11-19 20:33:05
【问题描述】:

我正在 MySQL 中创建一个触发器,让我知道谁(哪个 mysql 用户)正在对特定表进行更新。

我知道 MySQL 有一个函数 CURRENT_USER(),但它是在触发器创建时插入用户名,还是在触发器被调用时插入用户名?

到目前为止,这是我的触发器。我想在“内容”列中插入用户名。

delimiter |
CREATE TRIGGER update_product_procedure 
BEFORE UPDATE ON product_procedure 
FOR EACH ROW BEGIN 
INSERT INTO trigger_logs SET 
content = 'This is a test', postDate=NOW(); 
END;
|

【问题讨论】:

  • 有趣的问题。我最初的猜测是它会是调用者,但我会按照问题来查看真正的答案。

标签: mysql triggers


【解决方案1】:

作为调用者我会花很多钱,但来自http://bugs.mysql.com/bug.php?id=5861

SQL 标准说:“触发的动作总是在 包含触发器的架构所有者的授权。”这意味着 在 MySQL 中,我们应该在用户授权下执行触发器主体 创建触发器,而不是发出调用此触发器的语句的人。

抱歉,我认为这是一个显而易见的问题 :-(

问候

编辑:user() 给调用者

【讨论】:

  • 谢谢。不用担心。我选择了 USER(),我不知道它存在。
  • 感谢您花时间研究。我也不知道 USER()。很高兴知道:D
  • 可能很明显,但是能够使用 CURRENT_USER() 获取权限适用于触发器的用户也很高兴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 2013-11-26
  • 2015-03-01
  • 2012-05-05
相关资源
最近更新 更多