트리거 함수에서 SQL 명령을 실행하고 이 명령은 트리거의 대상 테이블에 액세스한 다음 데이터 가시성 규칙을 알아야 합니다. 이러한 SQL 명령이 데이터 변경을 볼 수 있는지 여부를 결정합니다. 방아쇠가 발사되는 것입니다. 간략하게:
명령문 수준 트리거는 간단한 가시성 규칙을 따릅니다: 명령문에 의해 변경된 내용은 누구에게도 표시되지 않습니다. 이전에 호출되는 명령문 수준 트리거 모든 수정 사항은 다음 사용자에게 표시됩니다. 명령문 수준이후트리거.
데이터 변경(삽입, 업데이트 또는 삭제)으로 인해 발사 방아쇠는 자연스럽게아님SQL 명령에 표시됨 행 수준에서 실행됨이전트리거, 아직 발생하지 않았기 때문입니다.
단, 행 수준에서 실행되는 SQL 명령이전트리거할 것이다데이터의 효과 보기 동일한 외부에서 이전에 처리된 행에 대한 변경 사항 명령. 주문을 하기 때문에 주의가 필요합니다. 변경 이벤트는 일반적으로 예측할 수 없습니다. SQL 명령 여러 행에 영향을 미치는 경우 모든 행을 방문할 수 있습니다. 주문하세요.
마찬가지로, 행 수준대신트리거는 이전에 수행된 데이터 변경의 효과를 확인합니다. 발사대신트리거 동일한 외부 명령입니다.
행 수준인 경우이후트리거는 실행되면 외부 명령에 의해 변경된 모든 데이터가 이미 완료되고 호출된 트리거에 표시됩니다. 기능.
귀하의 트리거 기능이 표준 중 하나로 작성된 경우 절차적 언어인 경우 위의 설명은 다음과 같은 경우에만 적용됩니다. 함수가 선언되었습니다.휘발성. 기능 선언된 것안정적또는불변호출에 의한 변경사항은 볼 수 없습니다. 어쨌든 명령을 내리세요.
데이터 가시성 규칙에 대한 추가 정보를 찾을 수 있습니다 에서PostgreSQL : 문서 : 9.1 : 데이터 스포츠 토토 베트맨 가시성. 의 예PostgreSQL : 문서 : 9.1 : 완전한 롤 토토 예다음을 포함 이 규칙을 보여줍니다.