이벤트 트리거는 정의된 데이터베이스에서 연관된 이벤트가 발생할 때마다 실행됩니다. 현재 지원되는 유일한 이벤트는 다음과 같습니다.ddl_command_start, ddl_command_end, table_rewrite그리고sql_drop. 추가 이벤트에 대한 지원은 향후 릴리스에 추가될 수 있습니다.
그ddl_command_start이벤트는 a 실행 직전에 발생합니다.만들기, 변경, 드롭, 보안 라벨, 댓글, 부여또는취소명령. 이벤트 트리거가 실행되기 전에 영향을 받는 개체가 존재하는지 존재하지 않는지 확인하지 않습니다. 그러나 예외적으로 공유 객체(데이터베이스, 역할, 테이블스페이스)를 대상으로 하는 DDL 명령이나 이벤트 트리거 자체를 대상으로 하는 명령의 경우에는 이 이벤트가 발생하지 않습니다. 이벤트 트리거 메커니즘은 이러한 개체 유형을 지원하지 않습니다.ddl_command_start또한 a 실행 직전에 발생합니다.선택명령, 이는 다음과 동일하므로다음으로 테이블 생성.
그ddl_command_end이벤트는 동일한 명령 세트를 실행한 직후에 발생합니다. 자세한 내용을 보려면DDL발생한 작업은 설정 반환 기능을 사용하세요pg_event_trigger_ddl_commands()에서ddl_command_end이벤트 범퍼카 토토 코드(참조섹션 9.29). 트리거는 작업이 수행된 후(그러나 트랜잭션이 커밋되기 전에) 실행되므로 이미 변경된 시스템 카탈로그를 읽을 수 있습니다.
그sql_drop이벤트 직전에 발생합니다ddl_command_end데이터베이스 개체를 삭제하는 모든 작업에 대한 이벤트 범퍼카 토토입니다. 삭제된 객체를 나열하려면 set-returning 함수를 사용하세요.pg_event_trigger_dropped_objects()에서sql_drop이벤트 범퍼카 토토 코드(참조PostgreSQL : 문서 : 15 : 9.29. 토토 트리거 기능). 시스템 카탈로그에서 개체가 삭제된 후에 트리거가 실행되므로 더 이상 개체를 조회할 수 없습니다.
그table_rewrite명령의 일부 작업으로 테이블이 다시 작성되기 직전에 이벤트가 발생합니다.테이블 변경그리고변경 유형. 다음과 같은 다른 제어문을 사용하여 테이블을 다시 작성할 수 있습니다.클러스터그리고진공, 그table_rewrite이벤트는 그들에 의해 실행되지 않습니다. 다시 작성된 테이블의 OID를 찾으려면 다음 함수를 사용하세요.pg_event_trigger_table_rewrite_oid()(참조PostgreSQL : 문서 : 15 : 9.29. 토토 트리거 기능). 재작성 이유를 찾으려면 다음 함수를 사용하세요.pg_event_trigger_table_rewrite_reason().
다른 기능과 마찬가지로 이벤트 트리거는 중단된 트랜잭션에서 실행될 수 없습니다. 따라서 DDL 명령이 오류로 인해 실패하는 경우 관련ddl_command_end범퍼카 토토가 실행되지 않습니다. 반대로 만약 addl_command_start범퍼카 토토가 오류로 인해 실패하고 더 이상 이벤트 범퍼카 토토가 실행되지 않으며 명령 자체를 실행하려는 시도가 이루어지지 않습니다. 마찬가지로, 만일 addl_command_end트리거가 오류와 함께 실패하면 포함된 트랜잭션이 중단되는 다른 경우와 마찬가지로 DDL 문의 효과가 롤백됩니다.
이벤트 트리거 메커니즘이 지원하는 명령의 전체 목록은 다음을 참조하세요.토토 핫 : 문서 : 15 : 40.2. 이벤트 트리거 발사 매트릭스.
이벤트 범퍼카 토토는 명령을 사용하여 생성됩니다.이벤트 범퍼카 토토 생성. 이벤트 범퍼카 토토를 생성하려면 먼저 특수 반환 유형을 사용하여 함수를 생성해야 합니다.event_trigger. 이 함수는 값을 반환할 필요가 없으며 반환하지 않을 수도 있습니다. 반환 유형은 함수가 이벤트 범퍼카 토토로 호출된다는 신호 역할만 합니다.
특정 이벤트에 대해 하나 이상의 이벤트 범퍼카 토토가 정의된 경우 범퍼카 토토 이름에 따라 알파벳 순서로 실행됩니다.
트리거 정의는 다음을 지정할 수도 있습니다.언제조건은 예를 들어 addl_command_start트리거는 사용자가 가로채기를 원하는 특정 명령에 대해서만 실행될 수 있습니다. 이러한 트리거의 일반적인 용도는 사용자가 수행할 수 있는 DDL 작업 범위를 제한하는 것입니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.