比如我现在有三个表A(aa,cc)B(bb,aa)C(cc,bb,aa)
我设置的B表里的aa是A表的外键,C表的aa也是A表的外键,同时C表的bb是B表的外键
就这样关联起来,但是我删除A表主键的时候,B表里对应的可以删除,跟B表中被删除的bb对应的表C中的内容也被删除,但是与A表中被删除的aa对应的表C的内容却删除不了,请高手指点?现在是这样的关系,B删则C删,但是A删B不一定删,C也不一定删

解决方案 »

  1.   

    oracle级联删除:建立Foreign   key   constraint的之后指定on   delete   cascade 
    级联更新你要写一个trigger
      

  2.   

    ORACLE本身的语法中就只能实现级联删除
    SQL>  Create TABLE NEWS(
      2   ID VARCHAR2(20) NOT NULL,
      3   OBJID VARCHAR2(20) NOT NULL,
      4   TITLE VARCHAR2(60) NOT NULL,
      5   AUTHOR VARCHAR2(40),
      6   FROMWhere VARCHAR2(60),
      7   CONTENT CLOB,
      8   ADDDATE DATE,
      9   CONSTRAINT PK_NEWS PRIMARY KEY(ID),
     10   CONSTRAINT FK_NEWS FOREIGN KEY(OBJID)
     11   REFERENCES NEWOBJ(ID)
     12   ON Delete CASCADE);表已创建。SQL>  Insert INTO NEWS(ID,OBJID,TITLE)VALUES('10','10','BUY THE COMPUTER');已创建 1 行。SQL>  Insert INTO NEWS(ID,OBJID,TITLE)VALUES('20','10','I LOVE YOU');已创建 1 行。SQL> Select COUNT(*) FROM NEWOBJ;  COUNT(*)
    ----------
             2SQL> Select COUNT(*) FROM NEWS;  COUNT(*)
    ----------
             2SQL> Delete FROM NEWOBJ Where ID='10';已删除 1 行。SQL> Select COUNT(*) FROM NEWOBJ;  COUNT(*)
    ----------
             1SQL> Select COUNT(*) FROM NEWS;  COUNT(*)
    ----------
             0