在数据库管理中,外键通过链接表之间的数据来强制引用完整性。默认情况下,大多数数据库系统都会设置具有“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中文网其他相关文章!