2016-11-24 101 views
1

DB:MySQL的的MySQL觸發錯誤:1442

使用: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.

我試圖創建的形式供用戶選擇和購買門票之前插入一個保留在此錯誤絆倒了。我想知道如果有人可以看看我的數據庫,插入命令使用,也是我的觸發代碼。任何幫助將不勝感激,因爲我有意識地試圖解決這個問題好幾個小時。

Insert命令:http://pastebin.com/tyBPWNDd

整個DB並引發一個問題:http://pastebin.com/BvUj1NdH

解決:感謝所有幫助者,我能夠找出我的問題,這是使用遞歸觸發器當MySQL不支持。我通過刪除遞歸代碼解決了我的問題,並讓我的網站後端處理current_date集合而不是觸發器。我會很快發佈固定觸發器。

+0

引用觸發器不能修改引起它要執行的表。你需要重新安排你的邏輯,這樣纔不會發生。 –

+0

@TimBiegeleisen謝謝!你很有幫助 – Tonk

+0

很高興能對你有用,但也許你應該評論你是如何解決問題的,這樣這個問題可能會對別人更有幫助。 –

回答

1

是的,錯誤是不言自明的。您正在嘗試創建未在MySQL支持作爲可以在你的代碼發佈

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

上同更多infromation檢查MySQL Documentation可以看出遞歸觸發。從

  • Stored functions cannot be used recursively.

  • 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.

+0

非常感謝!這現在很有意義,我不能相信我錯過了這樣的事情。你是拉胡爾的大助手。 – Tonk