我有一张这样的桌子
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.
谢谢你。
答案 0 :(得分:1)
使用更新前触发器:
CREATE TRIGGER mytrigger BEFORE UPDATE
ON mytable FOR EACH ROW
BEGIN
set new.fullname = CONCAT(NEW.firstname, ' ' , NEW.lastname) ;
END;
作为备注:您使用update
会给您带来惊人的结果。 update
没有where
子句,因此它会在表格的所有行中设置fullname
列。