我想在更新同一个表中的某一行时更新字段data_aktualizacji
。我创建了以下复合触发器。
CREATE OR REPLACE TRIGGER oferta_update_trigger
FOR UPDATE ON oferty
compound TRIGGER
id_oferty number(10);
AFTER EACH ROW IS
BEGIN
id_oferty := :new.idk;
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN
UPDATE oferty SET data_aktualizacji = SYSDATE WHERE idk = id_oferty;
END AFTER STATEMENT;
END;
/
当我想更新一些记录时,我收到以下错误。
SQL Error: ORA-00036: maximum number of recursive SQL levels (50) exceeded.
如何解决这个问题呢?我创建了一些循环,但我不知道,如何解决这个问题。
更新oracle以将列更改为默认为sysdate
Alter table oferty alter column data_aktualizacji set default sysdate
根本不需要触发器
正如Ctznkane525所写,你明确应该使用default
-value来执行此操作。
如果你不想使用default
,你可以修改new.data_aktualizacji
:
CREATE OR REPLACE TRIGGER oferty_update_aktualizacji
BEFORE INSERT OR UPDATE
ON oferty
FOR EACH ROW
DECLARE
BEGIN
:new.data_aktualizacji:= sysdate;
END;