2016-11-24 18 views
1

DB:使用MySQLのトリガーエラー:1442

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

私はチケットを選択して購入するユーザーのためのフォームを作成する前に予約を挿入しようとすることで、このエラーにつまずきました。私は誰かが私のデータベースを見て、コマンドの使用法を挿入して、私のトリガーコードを見てもらえないのだろうかと思っていました。私は何時間もこれを把握しようとしているので、助けてくれれば幸いです。

Insertコマンド:http://pastebin.com/tyBPWNDd

全体の問題のDBとトリガー:http://pastebin.com/BvUj1NdH

解決:おかげで、私は、MySQLはそれらをサポートしていないとき、再帰的トリガーを使用していた私の問題を特定することができたすべてのヘルパーに。再帰的なコードを削除し、私のウェブサイトのバックエンドでトリガーの代わりにcurrent_dateを処理させることで、私の問題を解決しました。私はすぐに固定トリガを投稿します。

+0

トリガーは、実行されたテーブルを変更することはできません。これが起こらないようにロジックを並べ替える必要があります。 –

+0

@TimBiegeleisenありがとうございました!あなたは大きな助けとなりました – Tonk

+0

あなたにとって有益なのはうれしいですが、この質問が他の人にもっと役立つように、問題をどのように解決したかについてコメントしてください。 –

答えて

1

はい、エラーは自己説明的です。あなたの投稿コード

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

以上のinfromationについて同じにチェックMySQL Documentationで見ることができるようMySQLでサポートされていない再帰的なトリガーを作成しようとしています。それから引用する

  • 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

関連する問題