2009-11-19 65 views
4

我在MySQL中创建一个触发器让我知道WHO(哪个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; 
| 
+1

有趣的问题我最初的猜测是,它会调用程序,但是我会按照这个问题来看看真实的答案 – 2009-11-19 20:44:03

回答

4

我会穿上它大量的金钱被调用者,而是来自http://bugs.mysql.com/bug.php?id=5861

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

道歉,我以为这是:-(

问候

编辑一个显而易见的问题:用户()给出调用

+0

谢谢。不用担心,我选择了USER(),我不知道它的存在。 – 2009-11-19 21:28:44

+0

感谢您抽出宝贵的时间进行研究。 USER()。很高兴知道:D – 2009-12-29 22:40:51

+0

可能很明显,但能够获得适用于其权限的用户他用CURRENT_USER()触发也很好理解。 – wmorse 2013-02-27 20:51:41