帮帮忙,写一下嘛,我刚开始学,还有A的ID1字段可能为空

解决方案 »

  1.   


    应该是这种格式吧。
    create or replace trigger t1
    before insert  on a
    begin 
     if (:id==-1)
      then insert into b values(:id,:id1,:title)
      endif;
      end t1;
      
    create or replace trigger t2
    after update on a
    begin 
      update b set id1=:id1,....where id=:id;
    end t2;create or replace trigger t3
    after delete on a
    begin 
      delete from b where id=:id;
    end t2;
      

  2.   

    谢谢,不过有个问题?
    update b set id1=:id1,....where id=:id;

    delete from b where id=:id;
    时B中的ID可能不存在,要不要先判断一下?该怎么判断
      

  3.   

    第一:
    "要求这样,当A插入时判断ID1是否为-1,如果是则将该行插入B"
    不是已说了,无论触发器内怎样做,都不能阻止插入A记录
    第二:
    create trigger a_tri
    before update or delete on a
    for each row
    begin
    if updating then
    update b set ... where id=:new.id;
    else
    delete from b where id=:old.id;
    end if;
    end;
    /
      

  4.   

    我没有说要阻止插入A记录啊!我只是说当A update或delete时ID可能在B中不存在,这个时候在触发器中怎么判断?
      

  5.   

    这样判断:
    declare n1 number;
    SELECT COUNT(*) INTO n1 FROM B WHERE ID=:ID;
    IF (n1>0) then update....
      

  6.   

    create or replace trigger t1
    before insert,update,delte on a for each row
    begin 
     if (inseted=true)  then   insert into b values(:id,:id1,:title)
      endif;
      end t1;
      
    create or replace trigger t2
    after update on a
    begin 
      update b set id1=:id1,....where id=:id;
    end t2;create or replace trigger t3
    after delete on a
    begin 
      delete from b where id=:id;
    end t2;
      

  7.   

    从写
    create or replace trigger T1
    before insert,update,dalete  on a
    begin 
      if inserted=true then
         if:new=-1 then
            insert into b values(:new.id,:new.id2m,:new.title)
         end if
      end if
      if updateed=true then
         update b set id=:new.id,id1=:new.id,title=:new.title where b.id=:old.id
      end if
      if deleted=true then
         delete from b where id=:old.id
      end if
    end T1;