我已经建立了一个表,该表包含带有外键的列,并将其设置为ON DELETE CASCADE(删除父级时删除子级)
SQL命令将其更改ON DELETE RESTRICT为什么?(如果有孩子,则不能删除其父母)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
旧问题,但添加了答案,以便获得帮助
它分为两个步骤:
假设,a table1具有 列名称为,约束条件名称为的外键,并通过键被引用到表中(如下图所示)。 fk_table2_idfk_nametable2t2
table1 [ fk_table2_id ] --> table2 [t2] 第一步,删除旧的约束:(参考)
ALTER TABLE table1 DROP FOREIGN KEY fk_name;
通知约束已删除,列未删除
第二步,添加新约束:
ALTER TABLE table1
ADD CONSTRAINT fk_name FOREIGN KEY (fk_table2_id) REFERENCES table2 (t2) ON DELETE CASCADE;
添加约束,列已经在那里
例:
我有一个UserDetails表是指Users表:
mysql> SHOW CREATE TABLE UserDetails; : : User_id int(11) DEFAULT NULL, PRIMARY KEY (Detail_id), KEY FK_User_id (User_id), CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) : : 第一步:
mysql> ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id; Query OK, 1 row affected (0.07 sec)
第二步:
mysql> ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id -> FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE; Query OK, 1 row affected (0.02 sec)
结果:
mysql> SHOW CREATE TABLE UserDetails; : : User_id int(11) DEFAULT NULL, PRIMARY KEY (Detail_id), KEY FK_User_id (User_id), CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE来源:stack overflow :