MySQL 觸發器:刪除主表中從屬表中的記錄
在資料庫模式中,通常有多個表他們之間的關係。當在主表中操作記錄時,可能還需要對從屬表執行對應的操作。 MySQL 觸發器提供了一種方便的方法來自動執行此類操作。
考慮一個場景,其中名為顧客的表存儲有關個人的信息,而名為顧客信息的相關表包含每個顧客的其他詳細信息。當顧客從顧客表中刪除時,也需要從顧客資訊表中刪除其對應的資訊。
為了實現此目的,可以使用 DELETE 觸發器。但是,嘗試使用以下程式碼建立觸發器時遇到語法錯誤:
CREATE TRIGGER log_patron_delete AFTER DELETE on patrons FOR EACH ROW BEGIN DELETE FROM patron_info WHERE patron_info.pid = patrons.id END
錯誤(1046:檢查第 6 行 END 附近的語法)表示觸發器程式碼的語法有問題。經過仔細檢查,發現在 DELETE 語句中應該使用 old.id 語法而不是顧客.id 來正確引用已刪除顧客的 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主表刪除後如何正確刪除從屬表記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!