create or replace trigger TEST
after update of status on monitor for each row
Declare pattid number(30):=0;
begin
select patid into pattid from monitor where serial=:old.serial;
if :new.status = 2 then
update patient set linkmob4='是' where pat_id=pattid;
else
update patient set linkmob4='否' where pat_id=pattid;
end if;
end;提示出错,不能这么干.5555

解决方案 »

  1.   

    没必要那么写,这样就能满足你的需要
    create or replace trigger TEST
    before update of status on monitor for each row
    begin
    if :new.status = 2 then
      :new.linkmob4='是';
    else
      :new.linkmob4='否';
    end if;
    end;
      

  2.   

    你查询本表有什么意义?从:new和:old什么都能查询到
      

  3.   

    这个:new.linkmob4='是';不是update patient set linkmob4='是' where pat_id=pattid;
      

  4.   

    不好意思,看错了。这样改
    create or replace trigger TEST
    after update of status on monitor for each row
    Declare pattid number(30):=0;
    begin
    update patient set linkmob4=decode(:new.status,2,'是','否') where pat_id=:new.patid;
    end;
      

  5.   

    大概是看错了你的用意吧,不过思路却是完全正确的。create or replace trigger TEST
    after update of status on monitor for each row
    Declare pattid number(30):=0;
    begin
    if :new.status = 2 then
    update patient set linkmob4='是' where pat_id=new.pattid;
    else
    update patient set linkmob4='否' where pat_id=new.pattid;
    end if;
    end;