我已经建立了一个表,该表包含带有外键的列,并将其设置为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 :
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。