老师您好 当一个数据库中有两个表 (例如 student表 和course表 通过学号连接 在course表中sno是外键) 当我依据student表中的sno属性删除该学生的时候会 报出 不允许删除父表(student)的sno属性的 错误!
请问:
1、怎么回事?
2、该怎么解决呢?
当删除父节点时,由数据库来帮助删除子节点,这样就不用我们显示地写代码先删子节点,再删父节点了。
第一步:删除原有的外键约束
ALTER TABLE child_table DROP FOREIGN KEY `FK_Reference_2` ;
第二步:添加新的外键约束,增加ON DELETE CASCADE
ALTER TABLE child_table
ADD CONSTRAINT `FK_Reference_2`
FOREIGN KEY (`parent_id` )
REFERENCES parent_table (`parent_id` )
ON DELETE CASCADE
ON UPDATE RESTRICT;
这样,就可以达到删除父节点的时候,自动删除子节点的目的了。
当删除有外键的属性的数据时,需要先把该外键值关联的数据删除掉。这是外键约束的要求。
也就是说删除student表的数据时,必须先把courcse表中通过sno关联的数据删除掉。