有没有人理我啊!!!!!!
对了,我可以这样写么?
create or replace trigger XP_MU_tri
after   UPDATE on MUTUAL_OPERTION
for each row
declarebeginif :new.STATE=1  and :new.SENDSTATE =0 then beginXP_MUTUAL(:new.SENDMSG,:new.SPNUMBER,:new.INFORMCLIENT);
update tb_fz set SENDSTATE=1,Time = sysdate where  ;
end;
end if;end;
这样可以不可以,如果有更改的我都认为是.:new的变量。

解决方案 »

  1.   

    update MUTUAL_OPERTION set SENDSTATE=1 where STATE=1; 此句有问题,
      因为会重复调用此trigger,  不知是不是叫回调。
    反正不能这样写。
      

  2.   

    你可以在当前触发器里赋值给它啊,不过要是before
    看看对你存储过程的调用是否有影响,如果没有的话,可以这样实现的
    就是:new.SENDSTATE =1
    这样就可以把当前行修改了,不知是否符合你的要求?
      

  3.   

    现在我做了修改,如果一表有值插入后
    create or replace trigger XP_MU_tri
    after  insert  on 表1for each row
    declare
    变量1 int;
    begin
    select STATE into 变量1 from 表2 where 表2中ID=(select 表1中ID from 1where :new.被插入的字段=1);
    if :new.被更改的字段=1  and 变量1=0 then beginXP_MUTUAL(:new.SENDMSG,:new.SPNUMBER,:new.INFORMCLIENT);
    update 表2 set STATE=1 where MUTUALID=(select ID from 表1where :new.被插入字段=1); 
    end;
    end if;
    如果是此表被修改过的话
    create or replace trigger XP_MU_tr
    after UPDATE on MUTUAL_OPERTION
    for each row
    declare
    v_SENDSTATE int;
    v_SENDMSG varchar(100);
    v_SPNUMBER varchar(30);
    v_INFORMCLIENT varchar(100);
    begin
    select STATE into v_SENDSTATE from 表2 where MUTUALID=(select ID from表1where :new.被修改做的字段=1);
    if :new.STATE=1  and v_SENDSTATE =0 then begin
    ---下面这句话是想找到被修改做的字段的那一行里其他字段的值
    select :old.SENDMSG,:old.SPNUMBER,:old.INFORMCLIENT into  v_SENDMSG,v_SPNUMBER,v_INFORMCLIENT from MUTUAL_OPERTION where :new.STATE=1;
    --调用存储过程
    XP_MUTUAL(v_SENDMSG,v_SPNUMBER,v_INFORMCLIENT);
    update MUTUAL_STATE set STATE=1 where MUTUALID=(select ID from MUTUAL_OPERTION where :new.STATE=1); 
    end;
    end if;end;end;
      

  4.   

    其实说这么多,就是想问一句,我用修改过的:new.被修改字段能不能做条件查询出这一行的其他:old.其他字段的值~~~~~~~~~~~