0

我正在尝试编写一个触发器来更新相同的表数据:

表名:TEST_INSERTTIMETRIGGER

栏目:更改日期

以下是我尝试过的:

CREATE OR REPLACE TRIGGER TESTTRIGGER 
BEFORE
INSERT ON TEST_INSERTTIMETRIGGER 
REFERENCING NEW AS  NEW OLD AS OLD
for each row
declare
reqdate date=old.changedate;
BEGIN 
:new.changedate:=reqdate+1/24; 
END;

当我尝试使用插入语句时,空值正在插入到表名中。

insert into TEST_INSERTTIMETRIGGER (changedate) VALUES (to_date(SYSDATE, 'yyyy/mm/dd hh24:mi:ss'))

让我建议我哪里出错了。

4

1 回答 1

3

在插入触发器之前,“旧”值都设置为 NULL。你必须使用new.changedate

CREATE OR REPLACE TRIGGER TESTTRIGGER 
BEFORE
INSERT ON TEST_INSERTTIMETRIGGER 
REFERENCING NEW AS  NEW OLD AS OLD
for each row
BEGIN 
:new.changedate:=:new.changedate + 1/24; 
END;
于 2013-07-15T12:08:15.777 回答