try: CREATE TRIGGER tri_OperateTime AFTER INSERT OR UPDATE OF age ON Person FOR EACH ROW begin IF INSERTING THEN :new.idate :=sysdate; END IF; IF UPDATING THEN :new.idate :=sysdate; END IF; end;
try: CREATE TRIGGER tri_OperateTime AFTER INSERT OR UPDATE ON TableTest FOR EACH ROW begin IF INSERTING THEN :new.OperateTime :=sysdate; END IF; IF UPDATING THEN :new.OperateTime :=sysdate; END IF; end;
CREATE OR REPLACE TRIGGER tri_OperateTime BEFORE INSERT OR UPDATE ON TableTest REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW Begin:new.insert_date := sysdate;:new.update_date := sysdate;End;
welyngj 还记得上次的一个触发器同样不能识别:new的问题吧。这里如果要修改:new的值,只能是在before的trigger中,所以把 AFTER INSERT OR UPDATE ON TableTest 改为 BEFORE INSERT OR UPDATE ON TableTest 即可。
for example:create table test1( id int,idate date defalut sysdate);
CREATE TRIGGER tri_OperateTime
AFTER INSERT OR UPDATE OF age ON Person
FOR EACH ROW
begin
IF INSERTING THEN :new.idate :=sysdate; END IF;
IF UPDATING THEN :new.idate :=sysdate; END IF;
end;
CREATE TRIGGER tri_OperateTime
AFTER INSERT OR UPDATE ON TableTest
FOR EACH ROW
begin
IF INSERTING THEN :new.OperateTime :=sysdate; END IF;
IF UPDATING THEN :new.OperateTime :=sysdate; END IF;
end;
BEFORE INSERT OR UPDATE ON TableTest
REFERENCING
NEW AS NEW
OLD AS OLD
FOR EACH ROW
Begin:new.insert_date := sysdate;:new.update_date := sysdate;End;
welyngj 还记得上次的一个触发器同样不能识别:new的问题吧。这里如果要修改:new的值,只能是在before的trigger中,所以把
AFTER INSERT OR UPDATE ON TableTest 改为
BEFORE INSERT OR UPDATE ON TableTest
即可。