MySQL 的預設刪除行為:澄清選項
理解MySQL 在刪除子表中具有外鍵關係的父行時的行為關重要為了資料的完整性。 MySQL 文件可能有些含糊不清,導致對預設行為的混淆。本文旨在清楚解釋 ON DELETE 子句的五個可能選項,並建立省略它們時的預設行為。
NO ACTION 和 RESTRICT:防止破壞 FK 約束
MySQL 預設的 ON DELETE 行為是 NO ACTION(或 RESTRICT)。兩個選項的功能相同,可以有效防止任何違反外鍵約束的資料庫變更。換句話說,禁止刪除具有相關子行的父行。
SET NULL:FK 值無效
SET NULL 選項採用不同的方法。當指定 ON DELETE SET NULL 時,MySQL 允許刪除父行,但使子表中對應的外鍵值無效,前提是該列未定義為 NOT NULL。
CASCADE:傳播另一方面,刪除相關行
CASCADE 會在刪除父行時自動級聯刪除相關子行。此選項可確保子資料也被刪除,從而維護資料庫的參考完整性。
SET DEFAULT:不支援的選項
SET DEFAULT 選項由解析器但最後被 InnoDB 拒絕。這不是一個有效的選項,應該避免。
結論
總之,MySQL 對於 ON DELETE 子句的預設行為是 NO ACTION 或 RESTRICT,這會阻止刪除具有子行的父行的數量。 SET NULL 會使子行中的外鍵值無效,而 CASCADE 會自動刪除相關的子行。 SET DEFAULT 不是受支援的選項。了解這些選項對於關聯式資料庫中的資料管理和維護資料完整性至關重要。
以上是當您刪除 MySQL 中的父行時會發生什麼?了解刪除行為和預設選項。的詳細內容。更多資訊請關注PHP中文網其他相關文章!