이 섹션에서는 이벤트 트리거 기능에 대한 인터페이스의 하위 수준 세부정보를 설명합니다. 이 정보는 C에서 이벤트 트리거 함수를 작성할 때만 필요합니다. 고급 언어를 사용하는 경우 이러한 세부 정보가 자동으로 처리됩니다. 대부분의 경우 C로 이벤트 트리거를 작성하기 전에 절차적 언어 사용을 고려해야 합니다. 각 절차적 언어 문서에는 해당 언어로 이벤트 트리거를 작성하는 방법이 설명되어 있습니다.
이벤트 트리거 기능은 다음을 사용해야 합니다.“버전 1”함수 관리자 인터페이스.
이벤트 토토 관리자가 함수를 호출하면 일반 인수가 전달되지 않지만 a가 전달됩니다.“컨텍스트”a를 가리키는 포인터EventTriggerData구조. C 함수는 매크로를 실행하여 이벤트 토토 관리자에서 호출되었는지 여부를 확인할 수 있습니다.
CALLED_AS_EVENT_TRIGGER(fcinfo)
다음으로 확장:
((fcinfo)-컨텍스트 != NULL && IsA((fcinfo)-컨텍스트, EventTriggerData))
이것이 true를 반환하면 전송하는 것이 안전합니다.fcinfo-컨텍스트입력하려면EventTriggerData *그리고 가리키는 것을 활용EventTriggerData구조. 이 기능은 다음과 같아야 합니다.아님변경EventTriggerData구조 또는 그것이 가리키는 데이터.
구조 EventTriggerData다음에 정의됨명령/event_trigger.h:
typedef 구조체 EventTriggerData
NodeTag 유형;
const char *이벤트; /* 이벤트 이름 */
노드 *parsetree; /* 구문 분석 트리 */
const char *태그; /* 명령 태그 */
EventTriggerData;
여기서 구성원은 다음과 같이 정의됩니다:
유형항상T_EventTriggerData.
이벤트함수가 호출되는 이벤트를 설명합니다. 다음 중 하나입니다."ddl_command_start", "ddl_command_end", "sql_drop", "table_rewrite". 참조PostgreSQL : 문서 : 12 : 39.1. 이벤트 토토 캔 동작 개요이 사건의 의미에 대해.
파싱 트리명령의 구문 분석 트리에 대한 포인터. 자세한 내용은 PostgreSQL 소스 코드를 확인하세요. 구문 분석 트리 구조는 예고 없이 변경될 수 있습니다.
태그이벤트 트리거가 실행되는 이벤트와 연관된 명령 태그, 예를 들어"함수 생성".
이벤트 트리거 함수는 다음을 반환해야 합니다.NULL포인터 (아님SQL null 값, 즉 설정하지 않음isNull참).