이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 9.30. 롤 토토 트리거 기능버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

9.28. 이벤트 사설 토토 기능

포스트그레SQL이벤트 트리거에서 정보를 검색하기 위한 도우미 함수를 제공합니다.

이벤트 사설 토토에 대한 자세한 내용은 참조PostgreSQL : 문서 : 9.6 : 이벤트 메이저 토토 사이트.

9.28.1. 명령 종료 시 변경 사항 캡처

pg_event_trigger_ddl_commands다음 목록을 반환합니다DDLa에 연결된 함수에서 호출될 때 각 사용자 작업에 의해 실행되는 명령ddl_command_end이벤트 사설 토토. 다른 컨텍스트에서 호출되면 오류가 발생합니다.pg_event_trigger_ddl_commands실행된 각 기본 명령에 대해 하나의 행을 반환합니다. 단일 SQL 문장인 일부 명령은 둘 이상의 행을 반환할 수 있습니다. 이 함수는 다음 열을 반환합니다.

이름 유형 설명
고급 oid 객체가 속한 카탈로그의 OID
오브지드 oid 객체 자체의 OID
objsubid 정수 하위 개체 ID(예: 열의 속성 번호)
command_tag 텍스트 명령 태그
객체_유형 텍스트 객체 유형
schema_name 텍스트 객체가 속한 스키마의 이름(있는 경우). 그렇지 않으면NULL. 인용이 적용되지 않습니다.
object_identity 텍스트 객체 ID의 텍스트 렌더링, 스키마 한정. 필요한 경우 ID에 포함된 각 식별자가 인용됩니다.
in_extension 부울 명령어가 확장 스크립트의 일부인 경우 참
명령 pg_ddl_command 내부 형식의 명령의 완전한 표현입니다. 직접 출력할 수는 없지만 다른 함수에 전달하여 명령에 대한 다양한 정보를 얻을 수 있습니다.

9.28.2. DDL 명령으로 삭제된 객체 처리

pg_event_trigger_dropped_objects명령으로 삭제된 모든 객체의 목록을 반환합니다.sql_drop이벤트가 호출됩니다. 다른 컨텍스트에서 호출되는 경우,pg_event_trigger_dropped_objects오류가 발생합니다.pg_event_trigger_dropped_objects다음 열을 반환합니다:

이름 유형 설명
고급 oid 객체가 속한 카탈로그의 OID
오브지드 oid 객체 자체의 OID
objsubid 정수 하위 개체 ID(예: 열의 속성 번호)
원본 부울 이것이 삭제의 루트 개체 중 하나인 경우 참
정상 부울 이 객체로 이어지는 종속성 그래프에 정상적인 종속성 관계가 있는 경우 True
is_temporary 부울 임시 개체인 경우 참
객체_유형 텍스트 객체 유형
schema_name 텍스트 객체가 속한 스키마의 이름(있는 경우); 그렇지 않으면NULL. 인용이 적용되지 않습니다.
객체_이름 텍스트 객체의 이름(스키마와 이름의 조합이 객체의 고유 식별자로 사용될 수 있는 경우). 그렇지 않으면NULL. 인용이 적용되지 않으며 이름은 스키마로 한정되지 않습니다.
object_identity 텍스트 객체 ID의 텍스트 렌더링, 스키마 한정. 필요한 경우 ID에 포함된 각 식별자가 인용됩니다.
address_names 텍스트[] 다음과 함께 있는 배열객체_유형그리고address_args, 다음에서 사용할 수 있습니다.pg_get_object_address()같은 종류의 동일한 이름의 개체를 포함하는 원격 서버에서 개체 주소를 다시 생성하는 함수
address_args 텍스트[] 다음에 대한 보완address_names

pg_event_trigger_dropped_objects함수는 다음과 같이 이벤트 트리거에 사용될 수 있습니다.

함수 생성 test_event_trigger_for_drops()
        반환 event_trigger LANGUAGE plpgsql AS $$
선언
    obj 레코드;
시작
    FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()
    루프
        RAISE NOTICE '%가 떨어진 개체: % %.% %',
                     tg_태그,
                     obj.object_type,
                     obj.schema_name,
                     obj.객체_이름,
                     obj.object_identity;
    엔드 루프;
끝;
$$;
이벤트 트리거 만들기 test_event_trigger_for_drops
   켜기 sql_drop
   실행 절차 test_event_trigger_for_drops();

9.28.3. 테이블 재작성 이벤트 처리

다음에 표시된 기능표 9-88다음에 해당하는 테이블에 대한 정보 제공table_rewrite이벤트가 방금 호출되었습니다. 다른 컨텍스트에서 호출되면 오류가 발생합니다.

표 9-88. 테이블 재작성 정보

이름 반환 유형 설명
pg_event_trigger_table_rewrite_oid() 오이드 다시 작성하려는 테이블의 OID입니다.
pg_event_trigger_table_rewrite_reason() int 재작성 이유를 설명하는 이유 코드. 코드의 정확한 의미는 릴리스에 따라 다릅니다.

pg_event_trigger_table_rewrite_oid함수는 다음과 같은 이벤트 트리거에 사용될 수 있습니다.

함수 생성 test_event_trigger_table_rewrite_oid()
 반환 event_trigger
 언어 plpgsql AS
$$
시작
  RAISE NOTICE '% 이유 때문에 테이블 % 다시 쓰기',
                pg_event_trigger_table_rewrite_oid()::regclass,
                pg_event_trigger_table_rewrite_reason();
끝;
$$;

이벤트 트리거 만들기 test_table_rewrite_oid
                  ON 테이블_재작성
   실행 절차 test_event_trigger_table_rewrite_oid();