在mysql中,如何在同一个表中使用AFTER/BEFORE INSERT ON触发器更新表中的所有旧行?
在向表中插入新行之前/之后,我需要将表中所有旧行的status列更新为false 我访问了这些,但没有解决我的问题。 以下是我收到的错误消息:在mysql中,如何在同一个表中使用AFTER/BEFORE INSERT ON触发器更新表中的所有旧行?,mysql,triggers,Mysql,Triggers,在向表中插入新行之前/之后,我需要将表中所有旧行的status列更新为false 我访问了这些,但没有解决我的问题。 以下是我收到的错误消息: 原因:java.sql.SQLException:无法更新存储函数/触发器中的表“table\u name”,因为调用此存储函数/触发器的语句已使用该表。您不能使用触发器更新运行触发器的同一表,因为创建无限循环的风险太高了 例如,一个insert触发器更新其表,该表在更新时运行另一个触发器,该表插入到同一个表,该表运行insert触发器 你不能也不需要
原因:java.sql.SQLException:无法更新存储函数/触发器中的表“table\u name”,因为调用此存储函数/触发器的语句已使用该表。您不能使用触发器更新运行触发器的同一表,因为创建无限循环的风险太高了 例如,一个insert触发器更新其表,该表在更新时运行另一个触发器,该表插入到同一个表,该表运行insert触发器 你不能也不需要使用触发器。相反,在应用程序中插入之前,使用事务并运行更新 伪代码:
START TRANSACTION;
UPDATE table_name SET status = false;
INSERT INTO table_name ...values...
COMMIT;
是的,对你说的完全满意…谢谢你@Bill
START TRANSACTION;
UPDATE table_name SET status = false;
INSERT INTO table_name ...values...
COMMIT;