2012-12-13 2 views
0

특정 테이블에 대해 삽입되거나 업데이트 된 모든 레코드에 entry_stamp 열 (유형 = DATE)을 업데이트하는 Oracle 트리거를 만들려고합니다. 나는이 오류를 얻고있다삽입 또는 업데이트 된 레코드에 타임 스탬프를 업데이트하는 트리거를 만드시겠습니까?

CREATE OR REPLACE TRIGGER mytable_entry_stamp 
AFTER INSERT OR UPDATE ON mytable FOR EACH ROW 
BEGIN :NEW.entry_stamp := SYSDATE; END; 

:

ORA-04084: cannot change NEW values for this trigger type

답변

1

Oracle/PLSQL: AFTER UPDATE Trigger에서 :

  • 당신은 업데이트 할 수 없습니다 : NEW 값을 여기 내 스크립트입니다.
  • : OLD 값을 업데이트 할 수 없습니다.

오라클은 MSSQL과 달리 AFTER 트리거 내의 레코드를 업데이트 할 수없는 것으로 보입니다. 따라서 로깅/감사 목적으로 예약되어 있습니다. 즉, 다른 테이블에 레코드를 삽입하거나 업데이트 할 수 있습니다.. 이 트리거를 BEFORE으로 변환 한 후 완벽하게 작동했습니다.

관련 문제