37.2. 데이터 변경의 가시성#

트리거 함수에서 SQL 명령을 실행 하고이 명령이 트리거의 테이블에 액세스하면 데이터 가시성 규칙을 알고 있어야합니다. 이러한 SQL 명령이 트리거가 발사 된 데이터 변경 사항을 볼 수 있는지 여부를 결정하기 때문입니다. 간단히:

  • 명령문 수준 트리거 간단한 가시성 규칙을 따릅니다. 진술에 의한 변경 사항은 명령문 수준으로 보이지 않습니다트리거, 모든 수정은 명령문 수준으로 보입니다이후트리거.

  • 데이터 변경 (삽입, 업데이트 또는 삭제)은 트리거가 자연스럽게 발생합니다not행 수준으로 실행 된 SQL 명령에 표시트리거, 아직 발생하지 않았기 때문에 트리거.

  • 그러나 SQL 명령은로드 레벨에서 실행되었습니다트리거Will동일한 외부 명령에서 이전에 처리 된 행에 대한 데이터 변경의 영향을 참조하십시오. 이러한 변화 이벤트의 순서는 일반적으로 예측할 수 없기 때문에주의가 필요합니다.

  • 마찬가지로, 행 수준대신트리거는 이전의 발사로 인해 데이터 변경의 영향을 볼 수 있습니다대신동일한 외부 명령에서 트리거합니다.

  • 행 수준이후트리거가 발사되고, 외부 명령에 의한 모든 데이터 변경이 이미 완료되었으며, 호출 된 트리거 함수로 표시됩니다..

트리거 함수가 표준 절차 언어로 작성되면 위의 진술은 함수가 선언 된 경우에만 적용휘발성. 선언 된 기능안정적인또는불변성어떤 경우에도 호출 명령에 의해 변경된 변경 사항이 표시되지 않습니다.

데이터 가시성 규칙에 대한 추가 정보는 찾을 수 있습니다섹션 45.5. 의 예섹션 37.4이 규칙의 데모가 포함되어 있습니다.

정정 제출

올바르지 않은 문서에 아무것도 표시되면 일치하지 않습니다.이 양식문서 문제를보고하려면