这是我想做的事情:
当INSERT表格中有新内容时ACCOUNTS,我需要通过设置以表示特定(旧)帐户已被编辑来更新ACCOUNTSwhere pk=中的行。NEW.edit_onstatus='E'
DELIMITER $$
DROP TRIGGER IF EXISTS setEditStatus
$$ CREATE TRIGGER setEditStatus
AFTER INSERT on ACCOUNTS FOR EACH ROW BEGIN update ACCOUNTS set status='E' where ACCOUNTS.pk = NEW.edit_on ; END$$
DELIMITER ; 要求不是我要操纵新插入的列,而是要使用一个已经存在的列pk = NEW.edit_on
但是,我无法更新同一张表: Can't update table ACCOUNTS ... already used by the statement that invoked this trigger
似乎您无法在触发器中完成所有这些操作。根据文档:
在存储的函数或触发器中,不允许修改调用该函数或触发器的语句已经在使用(用于读取或写入)的表。
根据此答案,您似乎应该:
创建一个存储过程,该过程将插入/更新目标表,然后更新事务中的所有其他行。
使用存储的proc,您将手动提交更改(插入和更新)。我还没有在MySQL中做到这一点,但是这篇文章看起来像一个很好的例子。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。