MySQL トリガー: AFTER DELETE 後のテーブルからの削除 - 構文エラーと解決策
「patron_info」から行を削除するトリガーを作成しようとしたとき「patrons」テーブルから行が削除された後、「6 行目の END 付近の構文を確認してください」というエラー メッセージが表示される場合があります。このエラーは、トリガー コードの構文エラーを示します。
現在、指定されたトリガー コードには、DELETE ステートメントの WHERE 句に構文エラーがあります:
DELETE FROM patron_info WHERE patron_info.pid = patrons.id
ここでの問題は、トリガーは、「patrons」エイリアスを使用して「patrons」テーブルを参照します。このエイリアスは、トリガーの BEGIN ブロックと END ブロック内でのみ使用できます。これを解決するには、DELETE ステートメントは代わりに、「patrons」テーブルから削除された行を表す「古い」エイリアスを参照する必要があります:
DELETE FROM patron_info WHERE patron_info.pid = old.id
この修正により、トリガー コードは次のようになります:
CREATE TRIGGER log_patron_delete AFTER DELETE on patrons FOR EACH ROW BEGIN DELETE FROM patron_info WHERE patron_info.pid = old.id; END
さらに、DELETE ステートメントがステートメントを終了するセミコロン (;) で終わっていることを確認することが重要です。コンソールにトリガー コードを入力するときは、トリガーの境界を定義するために区切り文字も使用する必要があります。
以上がDELETE 後にテーブルから削除する MySQL トリガーを作成するときに「6 行目の終わりに近いチェック構文」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。