B表是A表的附表,里边有A表新扩充的字段,其中state字段与A表中的字段想做关联,当A表update改动state字段时,B表相应记录的state字段也修改,并向A表值看齐,已知两个表的数据都有bccid这个字段,并且相应的唯一一条记录bccid值相等,可用来连接或者当where条件
求这个触发器应该怎么写啊?或者其他方式实现也成,讲的详细给分!!!!!

解决方案 »

  1.   

    update表A使用的存储过程吗?要是用的过程,直接在过程里在updat表B就行了,不必用触发器。
      

  2.   

    update表A使用的使用的是在程序里用sql语句。。
      

  3.   

    和楼上 的想法一样,在更新表A的同时更新B,触发器的话:
    create or replace trigger A_trigger
    after update
    on A
    begin
    --用MERGE INTO 实现
    MERGER INTO B
    USING A 
    ON B.bccid=A.bccid
    when matched then
      update set B.state=A.state
      when not matched then
        NULL;ECXEPTION 
    WHERN OTHERS THEN
    DBMS_OUPUT.PUT_LINE('ERROR ON TRIGGER');
    end;
      

  4.   

    请问这个触发器是执行在update语句之前还是之后?
    能保证整个执行完毕后a表和b表的state值完全一致吗?
    谢谢,答下这个就给分结贴了~
      

  5.   

    #3楼方法可以实现,我给个比较容易理解的代码:create or replace trigger upda_trg after update on a
    for each row
    declare
      v_bid  number;
      v_stat varchar2(20);
    begin
      select :old.bccid into v_bid from dual;
      select :new.state into v_stat from dual;
      update b set state = v_stat where bccid = v_bid;
    end;