2015-12-09 124 views
0

变化值。如果名字或姓氏得到改变我希望数据库自动改变全名太我有一个表像这样的MySQL:触发器 - 针对不同的列

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. 

谢谢你。更新触发前

回答

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列。

+0

我用BEFORE触发器试过了,但没有奏效。 – coder

+0

@coder。 。 。它是如何工作的? –