难道oracle里 没有级联更新,删除吗

解决方案 »

  1.   

    wxdsun(影子) 向你说的那样的话,就不存在关系了(子表更新时,主表里没有这个值,违法引用完整性,除非不建立关系)
      

  2.   

    create trigger tD_dd after DELETE on dd for each row
    begin
        /*将表cc.id置为空*/
        update cc set cc.id = NULL where cc.id = :old.id;
        /*或者*/
        /*从表cc中删除相应记录*/
        delete from cc where cc.id = :old.id;
    end;对于:old和:new,如果我没记错,应该是这样用的。试一下吧。
      

  3.   

    to yangguang1219()
    没有错
    一定要先把约束关系disable掉,再做先将子表更新,再更新主表
    你可以通过数据字典找到约束关系,通过这些关系,确定这个主表都被那些表引用了,
    然后先更新子表,在更新主表最后再把约束关系enable 
      

  4.   

    我现在没有建关系,用Trigger控制   主表的update ,delete已写好  从表的insert ,update写的有问题,劳驾各位帮忙,谢谢! Table dd (id number,name varchar(20)   主表
                            Table cc(id number ,name varchar(20)     create or replace trigger tri_update
     after update on cc
     for each row
     declare
        cursor cur_update is select id from dd;
             id cc.id%type;
     begin
          for i in cur_update  loop
          if id=i.id then
         update cc set id = :new.id;
        end if;
     end loop;
     end;成功执行但不正确  
      

  5.   


     begin
          for i in cur_update  loop
          if id=i.id then
         update cc set id = :new.id where id =i.id;
    elsif 
          reise_application_error(-20000,'主表中没有此值'||:new.id);
        end if;
     end loop;
     end;
      

  6.   

    建FOREIGN KEY 时这样建立:
    create constraint foreign key fk_cc_id on(cc.id) reference dd(id) on delete cascade