这里有一个大概的例子,是这样的了: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;
create trigger a_tri before update on a for each row begin if :new.id=4 and :old.id=5 then .... end if; end; /
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;
before update on a
for each row
begin
if :new.id=4 and :old.id=5 then
....
end if;
end;
/