mysql:创建一个" userstamp"

时间:2016-03-01 08:28:26

标签: mysql triggers

我想拥有自动" userstamps"在我的数据库中。意思是,每次用户更改某些内容时,他的Userid都会写入一列。 我尝试使用"更新后#34;触发器,但我的代码不起作用:

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

提前致谢!

2 个答案:

答案 0 :(得分:1)

我会这样做(我现在无法测试):

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

答案 1 :(得分:0)

好的,我解决了。 Jean Doux的答案几乎是正确的(谢谢!)。 MySQL无法更新同一个表,其中触发器是使用AFTER UPDATE发出的。 因此,我只是将触发器设置为BEFORE UPDATE。

我希望这也有助于其他人:

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