版权声明:本文为博主原创文章,未经博主允许不得转载。 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;