programing

열 업데이트 시 Oracle SQL 트리거

i4 2023. 7. 20. 21:42
반응형

열 업데이트 시 Oracle SQL 트리거

특정 플래그가 'Y'로 설정된 경우를 기준으로 게시된 날짜를 자동으로 추가하는 테이블에 대한 트리거를 만들려고 합니다.

트리거를 생성한 경험이 많지 않지만 지금까지 이것이 제가 가진 것입니다.

  create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  BEGIN
  :new.create_dt := sysdate where approved = 'Y';
  END;

열을 업데이트할 때 이 오류가 발생함

'USER'를 트리거합니다.ADD_CREATE_DT'이(가) 잘못되었으며 재검증에 실패했습니다.

아이디어 있어요?

감사해요.

WHEN 절을 사용합니다.

create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  when (new.approved = 'Y')
  BEGIN
  :new.create_dt := sysdate;
  END;

또는 다음과 같은 경우 사용:

create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  BEGIN
  if :new.approved = 'Y' then
   :new.create_dt := sysdate;
  end if;
  END;

이 경우 WHEN이 더 적절하고 효율적입니다.

create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  BEGIN
    IF :NEW.approved = 'Y' THEN
      :new.create_dt := sysdate;
    END IF;
  END;

어떤 버전의 Oracle을 사용하는지 모르겠습니다.Oracle 10g에서 다음 오류가 발생했습니다.

ORA-04084: cannot change NEW values for this trigger type
04084. 00000 -  "cannot change NEW values for this trigger type"
*Cause:    New trigger variables can only be changed in before row
           insert or update triggers.
*Action:   Change the trigger type or remove the variable reference.

AFTER 트리거의 필드는 변경할 수 없습니다.

언급URL : https://stackoverflow.com/questions/7982052/oracle-sql-trigger-on-update-of-column

반응형