我已经建立了一个表,该表包含带有外键的列,并将其设置为ON DELETE CASCADE(删除父级时删除子级)
ON DELETE CASCADE
SQL命令将其更改ON DELETE RESTRICT为什么?(如果有孩子,则不能删除其父母)
ON DELETE RESTRICT
旧问题,但添加了答案,以便获得帮助
它分为两个步骤:
假设,a table1具有 列名称为, 约束条件 名称为的 外键 ,并通过键被引用到表中( 如下图所示 )。 fk_table2_id fk_name``table2``t2
table1
fk_table2_id
fk_name``table2``t2
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表:
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 :