1

我遇到了执行触发器的问题。我在下面提供了 1 个触发器的代码。

create or replace
TRIGGER abc_tr01
  BEFORE INSERT
  ON tablename
  FOR EACH ROW

BEGIN
  UPDATE tablename
     SET dtCreatedDate = SYSDATE
     WHERE incidentid = ( SELECT :NEW.incidentid 
                            FROM DUAL  );
END;

该触发器应该更新表的 1 列 ( dtCreatedDate)并在对该表执行插入之前将其tablename存储在其中。SYSDATE

但是,它无法更新该dtCreatedDate字段。

我检查了触发器是否已启用。它也在插入时被解雇。我通过在触发代码中注入语法错误来检查这一点,该错误被及时检测到。

我正在使用 SQL Developer 3.0。

请帮忙。

4

1 回答 1

1

不需要UPDATE声明:

create or replace
TRIGGER abc_tr01
  BEFORE INSERT
  ON tablename
  FOR EACH ROW
BEGIN
  :new.dtCreatedDate := sysdate;
END;
/
于 2013-09-25T16:01:47.510 回答