插入triggrt后的mysql

lkaoscv7  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(227)

当性别为“m”、“l”或“t”时,我必须在insert操作后将employee表的性别改为“w”。
分隔符为$$

CREATE TRIGGER after_employee_insert  
AFTER INSERT ON employee  
FOR EACH ROW  
BEGIN  
UPDATE employee SET gender='W' where gender in('M', 'L', 'T');  
END$$

insert into employee values(111, 'zzz', 200000, 's')$$

o/p公司
错误1442(hy000):无法更新存储函数/触发器中的表“employee”,因为它已被调用此存储函数/触发器的语句使用。
即使我不接受海运提单,它也不允许更新
我应该在插入前使用吗?试过了,也试过了

where new.gender in('M', 'L', 'T');

o/p公司
错误1054(42s22):“new”中的未知列“gender”
提前谢谢

u4dcyp6a

u4dcyp6a1#

您可以更改插入引用的当前行的值 NEW ```
CREATE TRIGGER after_employee_insert
BEFORE INSERT ON employee
FOR EACH ROW
BEGIN
IF gender in('M', 'L', 'T') THEN
SET NEW.gender = 'W';
END IF;
END$$

但是如果在触发器中放入update语句,就会得到一个无休止的循环,db引擎会用一条错误消息阻止这个循环。

相关问题