| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.6 : 토토 베이 함수 | PostgreSQL : 문서 : 9.6 : 토토 결과 및 연산자 | 9장. 함수 및 연산자 | PostgreSQL : 문서 : 9.6 : 토토 결과 변환 |
포스트그레SQL이벤트 트리거에서 정보를 검색하기 위한 도우미 함수를 제공합니다.
이벤트 사설 토토에 대한 자세한 내용은 참조PostgreSQL : 문서 : 9.6 : 이벤트 메이저 토토 사이트.
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 | 내부 형식의 명령의 완전한 표현입니다. 직접 출력할 수는 없지만 다른 함수에 전달하여 명령에 대한 다양한 정보를 얻을 수 있습니다. |
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-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();