mysql报error 1442错误:Can’t update table ‘xxx’ in stored function/trigger because it is already used by statement which invoked this stored

说明function/trigger中有错误或者mysql没有提供的功能,一般是处理本表时发生错误导致的,MYSQL中触发器中不能对本表进行insert ,update ,delete操作,以免递归循环触发。只可以用set重设new的值,比如update可以用set替代

例如:

delimiter |
create trigger replaceGangcn
before insert on dept
for each row
begin
update dept set name = replace(new.name,’-‘,’ ‘);
end
|
delimiter ;

要将update那句改成set new.name = replace(new.name,’-‘,’ ‘);