Oracle更新触发器在同一个表上

时间:2018-03-03 22:57:17

标签: oracle plsql oracle11g

我希望在更新同一个表中的某一行时更新字段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.

如何解决这个问题?我创建了一些循环,但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

正如Ctznkane525所写,你绝对应该使用default - 值来执行此操作。

如果您不想使用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;