2009-11-19 81 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