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 ステートメントを使用しようとすると、null 値が tablename に挿入されます。

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

私が間違っているところを提案させてください。

4

1 に答える 1

3

「古い」値はすべて、befor insert トリガーで 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 に答える