gpt4 book ai didi

mysql - 安全触发器 mysql 已被语句使用

转载 作者:搜寻专家 更新时间:2023-10-30 22:31:51 25 4
gpt4 key购买 nike

我正在 mysql 中开发一个项目,但我无法在两个触发器之间进行操作,我想做的是

1)创建一个触发器,在一个表中插入值后更新另一个表的数据,工作

2)创建一个触发器,在更新上述表后,删除引爆第一个触发器的行,不起作用

我搜索了文档、示例、教程、谷歌,当然还有网站的不同帖子,但我没有找到任何可以指导我或帮助解决我的问题的东西:(

目前我有这个

1)

CREATE TRIGGER update1 BEFORE INSERT ON table1
FOR EACH ROW
UPDATE table2 SET table2.value = table2.value +
NEW.value WHERE ac_id = NEW.acc_id

2)

CREATE TRIGGER `delete` AFTER UPDATE ON table2
FOR EACH ROW DELETE FROM table1 WHERE table1.acco_id =
NEW.acc_id

两者都可以单独使用,但是如果我在 table1 中进行插入,则会出现以下消息

无法更新存储函数/触发器中的表“table1”,因为它已被调用此存储函数/触发器的语句使用。

抱歉我的英语不好,任何帮助将不胜感激,提前致谢

最佳答案

观察到的错误信息:

错误 2442 (HY000) 无法更新存储函数/触发器中的表“%s”,因为它已被调用此存储函数/触发器的语句使用。

是预期的行为。问题中显示的触发器违反了记录的限制:

A stored function or trigger cannot modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.

引用:https://dev.mysql.com/doc/refman/5.7/en/stored-program-restrictions.html


为了关注问题中显示的特定触发器,在插入到 table1 中触发的触发器的上下文中,不可能从 table1 中删除行。此限制没有解决方法。

“解决这个问题”意味着从当前的设计退一步,并提出一个不同的设计来实现目标。

关于mysql - 安全触发器 mysql 已被语句使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42426223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com