可以判斷old值是否為5,new值是否為4

解决方案 »

  1.   

    这里有一个大概的例子,是这样的了:CREATE OR REPLACE TRIGGER customerid_update
    BEFORE  DELETE  OR UPDATE
    ON customer
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    declare
        ls_pricetype char(10);
        ls_userid    char(30);
        ls_osuserid  char(255);
        ls_machine   char(255);
    Begin
        ls_osuserid := sys_context('USERENV','OS_USER');
        ls_userid   := sys_context('USERENV','SESSION_USER');
        ls_machine  := sys_context('USERENV','TERMINAL');
        IF UPDATING('FIELDNAME') THEN
        IF (:OLD.FIELDNAME = 5 ) AND (:NEW.FIELDNAME= 4) THEN
      --由5变成4的时候执行下面的操作
           INSERT INTO BASEINFOLOG( USERID    , OSUSERID , MACHINE , OPERATE ,
                                    TABLENAME , INID     , OLDID   , OLDNAME ,
                                    NEWID     , NEWNAME  )
           VALUES                 ( ls_userid  , ls_osuserid  , ls_machine , 'UPDATE' ,
                                    'CUSTOMER'      , :OLD.CUSTOMERINID , :OLD.CUSTOMERID , :OLD.NAME ,
                                    :NEW.CUSTOMERID , :NEW.NAME           );
           END IF;
      

  2.   

    create trigger a_tri
    before update on a
    for each row
    begin
    if :new.id=4 and :old.id=5 then
    ....
    end if;
    end;
    /