MySQL触发器错误:1442

时间:2016-11-24 08:35:19

标签: mysql sql database triggers

DB:MySQL

使用:MySQL Workbench

我目前正在开设一个课程项目,我们必须设计一个机场网站,用户可以登录/注册并购买各种航班的机票。在完成该项目一段时间后,我意识到我的触发器无效。

我收到错误: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设置而不是触发器来解决我的问题。我将很快发布固定触发器。

1 个答案:

答案 0 :(得分:1)

是的,错误是自我解释的。您正尝试创建MySQL不支持的递归触发器,如您发布的代码中所示

Create Trigger reservation_all
    after insert on Reservation
    for each row
    begin
        update Reservation

检查MySQL Documentation以获取更多信息。引用那个

  
      
  • 存储函数不能递归使用。

  •   
  • 存储的函数或触发器不能通过调用的语句修改已经使用(用于读取或写入)的表   功能或触发器。

  •