我有一张这样的 table
id firstname lastname fullname
1 alex car alex car
2 tony table tony table
如果名字或姓氏发生更改,我希望数据库也自动更改全名。
我用这个触发器尝试过
CREATE TRIGGER mytrigger
AFTER UPDATE
ON mytable FOR EACH ROW
BEGIN
UPDATE `mydb`.`mytable` SET `fullname` = CONCAT(NEW.firstname, " ",NEW.lastname)
END;
但我收到此错误:
#1442 - Can't update table 'mytable' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
谢谢你。
最佳答案
使用更新前触发器:
CREATE TRIGGER mytrigger BEFORE UPDATE
ON mytable FOR EACH ROW
BEGIN
set new.fullname = CONCAT(NEW.firstname, ' ' , NEW.lastname) ;
END;
请注意:您使用 update
会给您带来令人惊讶的结果。 update
没有 where
子句,因此它将在表中的所有行中设置 fullname
列。
关于MySQL:触发器 - 更改不同列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179520/