【发布时间】:2016-11-24 08:35:19
【问题描述】:
数据库:MySQL
使用:MySQL 工作台
我目前正在开展一个课程项目,我们必须设计一个机场网站,用户可以在该网站上登录/注册并购买提供的各种航班的机票。在该项目上工作了一段时间后,我意识到我的触发器不起作用。
我收到错误:Error Code: 1442. Can't update table 'reservation' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
我在创建表单以供用户选择和购买门票之前尝试插入预订,从而偶然发现了此错误。我想知道是否有人可以查看我的数据库、插入命令的使用以及我的触发代码。任何帮助将不胜感激,因为我在数小时内试图解决这个问题。
插入命令:http://pastebin.com/tyBPWNDd
有问题的整个数据库和触发器:http://pastebin.com/BvUj1NdH
已解决:感谢所有帮助者,我能够确定我的问题是在 MySQL 不支持递归触发器时使用它们。我通过删除递归代码并让我的网站后端处理 current_date 集而不是触发器来解决我的问题。我将很快发布固定触发器。
【问题讨论】:
-
触发器不能修改导致它被执行的表。您需要重新安排您的逻辑,以免发生这种情况。
-
@TimBiegeleisen 谢谢!你帮了大忙
-
很高兴对你有用,但也许你应该评论一下你是如何解决问题的,这样这个问题可能对其他人更有帮助。
-
@timbiegeleisen 我刚刚在我的原始帖子中发布了一个已解决的部分。我也会很快发布更改后的 sql 触发器。再次感谢您的帮助。
标签: mysql sql database triggers