问答详情
源自:3-1 课程总结

delete 外键属性报错

老师您好   当一个数据库中有两个表 (例如 student表  和course表  通过学号连接  在course表中sno是外键)   当我依据student表中的sno属性删除该学生的时候会  报出 不允许删除父表(student)的sno属性的  错误!     

请问:

 1、怎么回事?   

 2、该怎么解决呢? 

提问者:Java开发4131 2017-05-17 15:46

个回答

  • 慕移动9181930
    2022-03-25 20:35:03

    现在好了nbsp;谢谢

  • 有梦想的人不睡觉11
    2018-08-15 12:20:07

    当删除父节点时,由数据库来帮助删除子节点,这样就不用我们显示地写代码先删子节点,再删父节点了。
    第一步:删除原有的外键约束

    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;

    这样,就可以达到删除父节点的时候,自动删除子节点的目的了。


  • yeehom
    2017-05-21 23:15:17

    当删除有外键的属性的数据时,需要先把该外键值关联的数据删除掉。这是外键约束的要求。

    也就是说删除student表的数据时,必须先把courcse表中通过sno关联的数据删除掉。