트리거 함수에서 SQL 명령을 실행하고 이러한 명령이 트리거가있는 테이블에 액세스하면 데이터 가시성 규칙을 알고 있어야합니다. 이러한 SQL 명령이 트리거가 발사 된 데이터 변경 사항을 확인할 수 있기 때문입니다. 간단히:
명령문 수준 트리거 간단한 가시성 규칙을 따릅니다. 진술에 의한 변경 사항은 명령문 수준으로 보이지 않습니다전
트리거, 모든 수정은 명령문 수준으로 보입니다이후
트리거.
데이터 변경 (삽입, 업데이트 또는 삭제)은 방아쇠가 자연스럽게 발생합니다not로드 레벨에서 실행 된 SQL 명령에 표시전
트리거, 아직 일어나지 않았기 때문에 트리거.
그러나 SQL 명령은 행 수준으로 실행되었습니다전
트리거Will동일한 외부 명령에서 이전에 처리 된 행에 대한 데이터 변경의 영향을 참조하십시오. 이러한 변화 이벤트의 순서는 일반적으로 예측할 수 없기 때문에주의가 필요합니다.
마찬가지로, 행 수준대신
트리거는 이전의 발사로 인해 데이터 변경의 영향을 볼 수 있습니다대신
동일한 외부 명령에서 트리거.
행 수준이후
트리거가 발사되고, 외부 명령에 의한 모든 데이터 변경이 이미 완료되었으며, 호출 된 트리거 함수로 볼 수 있습니다..
트리거 함수가 표준 절차 언어로 작성되면 위의 진술은 함수가 선언 된 경우에만 적용휘발성
. 선언 된 기능안정적인
또는불변
어떤 경우에도 호출 명령으로 변경된 변경 사항이 표시되지 않습니다.
데이터 가시성 규칙에 대한 추가 정보는 찾을 수 있습니다.섹션 46.4. 의 예섹션 38.4이 규칙의 데모가 포함되어 있습니다.