[개발] 프로그램 지식

[oracle] trigger OLD 관련 개념 정리

  • -
반응형

데이터베이스 트리거는 데이터베이스에서 특정 동작이 발생할 때 자동으로 실행되는 스크립트입니다. 여기서 제공된 트리거는 INSERT INTO TABLE 문을 기준으로 작성되었습니다. ​

트리거 내에서 :OLD는 해당 트리거가 실행되기 전에 발생한 행의 이전 값을 참조합니다. 즉, 이전 값을 변경하는 UPDATE나 DELETE 작업을 기준으로 트리거가 동작하며, INSERT 작업과 같이 이전 값이 없는 경우에는 해당 트리거가 동작하지 않습니다. ​

예를 들어, 트리거가 AFTER DELETE 또는 AFTER UPDATE OF BS_YN에 실행되도록 설정되어 있고, INSERT 작업을 수행한다면, :OLD 값이 존재하지 않습니다. 왜냐하면 INSERT 작업은 기존의 행을 수정하는 것이 아니기 때문에 이전 값이 없습니다.

따라서 해당 INSERT 동작에 대해서는 트리거가 동작하지 않습니다. ​ 이러한 문제를 해결하기 위해서는 트리거를 수정하여 INSERT 작업에 대해서도 따로 처리하거나, INSERT 작업을 위한 별도의 트리거를 생성할 수 있습니다.

또는 AFTER INSERT OR DELETE OR UPDATE와 같이 여러 동작에 대해 트리거를 설정할 수도 있습니다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.