9.29. 토토 트리거 기능

PostgreSQL이 헬퍼 기능을 제공하여 토토 트리거에서 정보를 검색합니다.

토토 트리거에 대한 자세한 내용은 참조PostgreSQL : 문서 : 15 : 40 장. 이벤트 토토 핫.

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

pg_event_trigger_ddl_commands() →기록 설정

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

이름 type 설명
classId OID 카탈로그의 OID 객체는에 속합니다.
objid OID 개체 자체의 OID
objsubid 정수 서브-오브젝트 ID (예 : 열의 속성 번호)
command_tag 텍스트 명령 태그
object_type 텍스트 객체의 유형
Schema_Name 텍스트 스키마의 이름 객체가 속한 경우; 그렇지 않으면null. 인용문이 적용되지 않습니다.
object_identity 텍스트 객체 아이덴티티의 텍스트 렌더링, 스키마 자격. 신원에 포함 된 각 식별자는 필요한 경우 인용됩니다.
in_extension 부울 명령이 확장 스크립트의 일부인 경우 true
명령 PG_DDL_COMMAND 내부 형식으로 명령의 완전한 표현. 직접 출력 할 수는 없지만 명령에 대한 다른 정보를 얻기 위해 다른 기능으로 전달할 수 있습니다.

9.29.2. DDL 명령에 의해 삭제 된 처리 객체

pg_event_trigger_dropped_objects() →Setof Record

pg_event_trigger_dropped_objects명령에 의해 삭제 된 모든 개체 목록을 반환합니다.SQL_DROP이벤트가 호출됩니다. 다른 컨텍스트에서 호출되면 오류가 발생합니다. 이 함수는 다음 열을 반환합니다.

이름 타입 설명
classId OID 카탈로그의 OID에 속한 개체
​​objid OID 객체 자체의 OID
objsubid 정수 하위 객체 ID (예 : 열의 속성 번호)
원본 부울 이것이 삭제의 루트 객체 중 하나 인 경우 true
정상 부울 True이 객체로 이어지는 종속성 그래프에 정상적인 종속성 관계가있는 경우
is_temporary 부울 이것이 임시 대상이라면 참으로
object_type 텍스트 객체의 유형
Schema_Name 텍스트 스키마 이름 객체가 속한 경우; 그렇지 않으면NULL. 인용문이 적용되지 않습니다.
Object_Name 텍스트 객체의 이름, 스키마와 이름의 조합이 객체의 고유 식별자로 사용할 수있는 경우; 그렇지 않으면NULL. 인용문은 적용되지 않으며 이름은 스키마 자격이 없습니다.
object_identity 텍스트 객체 아이덴티티의 텍스트 렌더링, 스키마 자격. 신원에 포함 된 각 식별자는 필요한 경우 인용됩니다.
address_names 텍스트 [] 와 함께 배열object_typeandaddress_args,pg_get_object_address동일하게 명명 된 객체를 포함하는 원격 서버에서 객체 주소를 재현하는 함수
address_args 텍스트 [] 보완address_names

thepg_event_trigger_dropped_objects함수는 다음과 같은 이벤트 트리거에서 사용할 수 있습니다 :

함수 만들기 test_event_trigger_for_drops ()
        event_trigger language plpgsql을 $$로 반환합니다
선언하다
    OBJ 레코드;
시작하다
    select * from pg_event_trigger_dropped_objects ()의 obj의 경우
    고리
        통지 ' % 하락한 물체 : % %. % %',
                     tg_tag,
                     obj.object_type,
                     obj.schema_name,
                     obj.object_name,
                     obj.object_identity;
    엔드 루프;
끝;
$$;
이벤트 트리거 테스트 _event_trigger_for_drops를 만듭니다
   SQL_DROP에서
   함수 실행 test_event_trigger_for_drops ();

9.29.3. 테이블 처리 이벤트

표 9.102a에 대한 정보 제공table_rewrite토토가 방금 호출되었습니다. 다른 상황에서 호출되면 오류가 발생합니다.

표 9.102. 테이블 다시 작성 정보 기능

기능

설명

pg_event_trigger_table_rewrite_oid() →OID

다시 작성하려는 테이블의 OID를 반환합니다.

pg_event_trigger_table_rewrite_reason() →정수

재 작성의 이유를 설명하는 코드를 반환합니다. 값은 다음 값으로 구축 된 비트 맵입니다.1(테이블이 끈기가 바뀌 었습니다),2(열의 기본값이 변경됨),4(열에 새 데이터 유형이 있습니다) 및8(테이블 액세스 방법이 변경됨).


이 기능은 다음과 같은 이벤트 트리거에서 사용할 수 있습니다.

함수 만들기 test_event_trigger_table_rewrite_oid ()
 event_trigger를 반환합니다
 언어 plpgsql AS
$$
시작하다
  통지 통지 '이유를위한 테이블 %를 다시 쓰기 %',
                pg_event_trigger_table_rewrite_oid () :: regclass,
                PG_EVENT_TRIGGER_TABLE_REWRITE_RISEANT ();
끝;
$$;

이벤트 트리거 테스트 _table_rewrite_oid를 만듭니다
                  table_rewrite에서
   함수 실행 test_event_trigger_table_rewrite_oid ();

정정 제출

문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면