mysql触发器不能对同一张表进行修改操作的总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chl191623691/article/details/79607761

我创建一个触发器 ,当user表有插入操作的时候  修改user表中id等于1 的用户得名字为张三

CREATE TRIGGER ins_user
BEFORE INSERT ON users FOR EACH ROW 
BEGIN
UPDATE  users set name='张三' where id=100  ;
END;

创建完以后  当我执行插入语句得时候报错  INSERT INTO users(name) values('小明');

[Err] 1442 - Can't update table 'users' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

上面是报错信息.由于我是  对一张表同时进行 插入和修改操作,我起初怀疑就是mysql的 触发器不支持这种操作,经过百度证实这一点!

 1. 非常遗憾,MYSQL中触发器中不能对本表进行 insert ,update ,delete操作,以免递归循环触发

 2. 对于update 只能用set进行操作,insert与delete只能借助第二张表才能实现需要的目的


解决:

CREATE TRIGGER ins_user
BEFORE INSERT ON users FOR EACH ROW 
BEGIN
set new.name = '张三'; 
END;




猜你喜欢

转载自blog.csdn.net/chl191623691/article/details/79607761