比如,表A中有状态字段State,根据字段中的状态(比如:1006,9等),触发改变B表中的状态。(A表的数据是根据B表生成的)。请问这个触发器这么写?谢谢,

解决方案 »

  1.   

    灵异世界!把你的需求说明白点,最好给点测试数据和最后得到的数据,这样解决起来省事还有,你问题描述感觉不清楚,你说A表是根据B表来的,比如B表中的状态(比如:1006,9等),产生到A表中,而现在你又要将A表中的该状态下的整个触发器再回过头来修改B表,感觉不对劲哦!数据!需求!
      

  2.   

    create or replace trigger trigger_admission
    before update on a
    for each row when(old.State=106 or old.State=9)
    begin
        update b set State=old.State=106
    end;
      

  3.   

    create or replace trigger trigger_admission
    before update on a
    for each row when(old.State=106 or old.State=9)
    begin
        update b set State=old.State
    end;
      

  4.   

    可能是我没有描述清楚,给大家带了误解。不好意思。比如表A表结构
    ID(编码)
    Name(名称)
    state(状态)B表结构
    ID(编码)
    Name(名称)
    state(状态)
    re(备注)现在要求写一触发器,根据A表的状态(比如 1006,9000,1000几个状态)触发改变B表的状态。
      

  5.   


    create or replace
    TRIGGER TRIGGER1
     AFTER UPDATE OF STATE ON A 
     for each row
    BEGIN
      CASE
        WHEN :new.state = 1006 THEN update b set state = 9000 where b.id = :old.id;
        WHEN :new.state = 900 THEN update b set state = 1000 where b.id = :old.id;
        ELSE
          null;
      END  CASE;
     --如果要保证A和B的state一致,删掉上面的CASE,也成下面的
      --update b set state = :new.state where b.id = :old.id
    END;
      

  6.   

    create or replace trigger trigger_admission
    before update on a
    for each row when(old.State=1006 or old.State=9000)
    begin
      update b set State=:old.State where id=:old.id;
    end;