2016-03-01 107 views
1

我想在我的數據庫中自動創建「userstamps」。意思是,每當用戶改變某些東西時,他的Userid就被寫入一列。 我試圖通過使用「更新後」觸發器來解決這個問題,但我的代碼無法正常工作:提前mysql:創建一個「userstamp」

CREATE DEFINER = CURRENT_USER TRIGGER `db`.`tantworten_AFTER_UPDATE` 
AFTER UPDATE ON `tantworten` FOR EACH ROW 
BEGIN 
Insert into tantworten (User) 
Values (current_user()); 
END 

謝謝!

回答

0

好吧,我解決了這個問題。 Jean Doux的答案几乎是正確的(謝謝!)。 MySQL無法更新同一張表,觸發器是在AFTER UPDATE下發出的。 因此,我只是將觸發器設置爲BEFORE UPDATE之前。

我希望這可以幫助別人太:

create trigger userupdate Before Update on tantworten 
FOR EACH ROW 
set New.User = current_user(); 
1

我會做到這一點(我現在不能測試):

CREATE DEFINER = CURRENT_USER TRIGGER `db`.`tantworten_AFTER_UPDATE` 
BEFORE UPDATE ON `tantworten` FOR EACH ROW 
BEGIN 
    SET NEW.User = current_user(); 
END 
+0

我想現在以下(代碼只給了錯誤:未知變量): 上tantworten 'CREATE TRIGGER userupdate更新後EACH ROW INSERT INTO tantworten(用戶) 選擇CURRENT_USER();' Altough此創建觸發器,現在我不能改變什麼: 錯誤: '1442:無法更新表「tantw orten'存儲在函數/觸發器中,因爲它已被調用此存儲函數/觸發器的語句使用。 – rickquan