比如表A是主表
由于业务需要,表B、C、D都要用到表A的id,于是它们都有一个字段外键关联到表A
现在表A要删除一些记录,却因为有某些记录(表B、C、D中的)外键关联,无法删除
大家遇到这种情况是如何处理的?难道要提示用户先去删除表B、C、D中的关联记录?

解决方案 »

  1.   

    可以通过SQL的外键级联删除功能来完成外键表的分录删除
      

  2.   

    用级联删除,但是这种操作本身有一定的危险性,需要在删除A表的时候提示用户BCD表的数据也会被删掉
      

  3.   

    --SQL级联删除与级联更新使用格式: CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20)) CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT) 
      

  4.   

    我是楼主,谢谢各位大侠
    既然主表记录被删除,从表级联记录就是冗余的了,也应该被删除。这样我在删除时要给用户一些提示,表B、C、D中的某些关联记录也要被删除!
    4楼还给出了源代码,太感谢了。但是我的数据库是oracle的,oracle板块有点冷清,才来到这里打扰你们。oracle SQL的外键级联删除怎么写?
      

  5.   

    --ORACLE级联删除使用格式: CREATE TABLE A001(ID INT PRIMAY KEY,NAME VARCHAR2(20)) CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE,AGE NUMBER(2,0))