首頁 >資料庫 >mysql教程 >為什麼在刪除後建立 MySQL 觸發器以從表中刪除時出現「檢查第 6 行接近 END 的語法」錯誤?

為什麼在刪除後建立 MySQL 觸發器以從表中刪除時出現「檢查第 6 行接近 END 的語法」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 16:53:02238瀏覽

Why Am I Getting a

MySQL 觸發器:刪除後從表中刪除- 語法錯誤和解決方案

嘗試建立觸發器以從「patron_info」中刪除行時從「patrons」表中刪除一行後,可能會遇到「檢查第6 行END 附近的語法」的錯誤訊息。此錯誤表示觸發器程式碼中存在語法錯誤。

提供的觸發器程式碼目前在DELETE 語句的WHERE 子句中存在語法錯誤:

DELETE FROM patron_info
    WHERE patron_info.pid = patrons.id

這裡的問題是觸發器使用「patrons」別名引用「patrons」表,此別名僅在觸發器的BEGIN 和END 區塊中可用。要解決此問題,DELETE 語句應改為引用「舊」別名,它表示從「顧客」表中刪除的行:

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 語句以分號(;) 結尾以終止該語句也很重要。在控制台輸入觸發代碼時,也應該使用分隔符號來定義觸發邊界。

以上是為什麼在刪除後建立 MySQL 觸發器以從表中刪除時出現「檢查第 6 行接近 END 的語法」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn