触发器如下:CREATE or replace TRIGGER TEST_DB.add8hour after
INSERT ON TEST_DB.REPOSITORY for each row
declare PRAGMA AUTONOMOUS_TRANSACTION;
begin
update TEST_DB.REPOSITORY set RP_MODIFIED_TIME=:NEW.RP_MODIFIED_TIME+1/3 WHERE :new.RP_ID=(select max(:new.RP_ID) from TEST_DB.REPOSITORY);
commit;
end;目的是update最新insert的数据, 该数据的特征是拥有 RP_ID 的最大值, 但结果是 触发器只能update它的上一条记录,而不是本次的, 该怎么做?
该记录刚刚插入,after触发器即更新它? —— 是这个目的update TEST_DB.REPOSITORY set RP_MODIFIED_TIME=:NEW.RP_MODIFIED_TIME+1/3 WHERE RP_ID=:new.RP_ID; 这样也是一条也不更新, 会不会是在 new 的所取到值上有什么说法, where 条件不符合?
2 BEFORE INSERT ON test
3 FOR EACH ROW
4 DECLARE
5 BEGIN
6 :new.time := :NEW.TIME+1/3;
7 END;
8 /触发器已创建SQL> show error
没有错误。
SQL> insert into test values (1,to_date('2010-01-11 11:11:11','yyyy-mm-dd hh24:m
i:ss'));已创建 1 行。SQL> select * from test; ID TIME
---------- -------------------
1 2010-01-11 19:11:11SQL> commit;提交完成。SQL> select * from test; ID TIME
---------- -------------------
1 2010-01-11 19:11:11SQL> insert into test values (2,to_date('2010-02-22 22:22:22','yyyy-mm-dd hh24:m
i:ss'));已创建 1 行。SQL> select * from test; ID TIME
---------- -------------------
1 2010-01-11 19:11:11
2 2010-02-23 06:22:22SQL> commit;提交完成。SQL> select * from test; ID TIME
---------- -------------------
1 2010-01-11 19:11:11
2 2010-02-23 06:22:22SQL>
用before触发器试哈子。