在資料庫管理中,外鍵透過連結表之間的資料來強制引用完整性。預設情況下,大多數資料庫系統都會設定具有「ON DELETE CASCADE」行為的外鍵,該行為會在刪除父記錄時刪除子記錄。
但是,在某些情況下您可能想要將此行為修改為「關於刪除限制。」此變更可防止刪除具有現有子記錄的父記錄。
要更改引用操作,您需要先刪除現有約束。使用以下語法:
ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
將“table_name”替換為包含外鍵的表的名稱,將“constraint_name”替換為現有約束的名稱。
刪除舊約束後,您可以新增一個具有所需引用操作的新約束。使用以下語法:
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column) ON DELETE RESTRICT;
將“table_name”替換為與之前相同的表,將“constraint_name”替換為新約束的名稱,將“column_name”替換為外鍵列,將“referenced_table”替換為引用的表,以及“referenced_column”與引用表中的引用列。
考慮以下表結構:
CREATE TABLE UserDetails ( Detail_id INT PRIMARY KEY, User_id INT NOT NULL, FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE );
要將引用操作更改為“ON DELETE RESTRICT”,請依照以下步驟操作:
刪除現有的限制:
ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
新增限制:
ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE RESTRICT;
這些變更後,刪除「Users」表中的記錄將不再將刪除級聯到「UserDetails」表。如果「UserDetails」中存在引用「Users」中父記錄的現有子記錄,則刪除將受到限制。
以上是如何將外鍵的 ON DELETE CASCADE 變更為 ON DELETE RESTRICT?的詳細內容。更多資訊請關注PHP中文網其他相關文章!