当我有一个DATAMARKER
或LOG_ALARMA
" INSTER
时,我需要更新我的表UPDATE
的字段CONTADOR
" }"
我有这个,但返回静音错误。
create or replace TRIGGER TRIGGER2
AFTER INSERT OR UPDATE OF CONTADOR ON LOG_ALARMA
for each row
BEGIN
UPDATE LOG_ALARMA a
SET a.DATAMARKER=(SYSDATE);
END;
我看了另一个例子,他们工作但我无法正确执行。
如果我在触发器主体中对每一行进行注释,那么它工作正常,但UPDATES
表中的所有行。
答案 0 :(得分:0)
您不会发出更新SQL语句,因为这会再次导致触发器触发。
相反,您只需将值:new.DATAMARKER设置为sysdate,使用PL / SQL而不是SQL。
也可以在插入或更新之前进行。
答案 1 :(得分:0)
CREATE TABLE Mutating
(
ID1 NUMBER,
DATE1 DATE
)
表中的数据是
ID1 DATE1
1 09/01/2015 14:09:14
1 08/31/2015 14:09:21
2 08/30/2015 14:09:30
现在我想更新date1,如果在id1列上发生了任何更新,那么我在下面使用了触发器。
CREATE OR REPLACE TRIGGER Mutating_trg
before INSERT OR DELETE OR UPDATE ON Mutating
referencing old as old new as new
for each row
begin
if updating then
:new.date1:=sysdate;
end if;
end;
然后我发布了更新声明
update set Mutating id1=6 where trunc(date1)=trunc(sysdate-2)
1 row updated
现在查看结果
ID1 DATE1
1 09/01/2015 14:09:14
6 09/02/2015 14:09:14
2 08/30/2015 14:09:30
你应该使用before语句。