이 섹션에서는 인터페이스의 하위 수준 세부정보를 설명합니다. 무지개 토토 기능으로. 이 정보는 다음 경우에만 필요합니다. C로 무지개 토토 함수를 작성합니다. 더 높은 수준의 함수 언어를 사용하면 이러한 세부정보가 자동으로 처리됩니다.
참고:여기에 설명된 인터페이스는 다음에 적용됩니다.포스트그레SQL7.1 이상. 이전 버전은 다음을 통과했습니다.무지개 토토데이터전역 변수의 포인터
현재 무지개 토토데이터.
무지개 토토 관리자가 함수를 호출하면 함수가 호출되지 않습니다. 일반 매개변수를 전달했지만, a가 전달되었습니다."컨텍스트"a를 가리키는 포인터무지개 토토데이터구조. C 함수는 확인할 수 있습니다 무지개 토토 관리자로부터 호출되었는지 여부 매크로 실행CALLED_AS_TRIGGER(fcinfo), 다음으로 확장됨
((fcinfo)-컨텍스트 != NULL && IsA((fcinfo)-컨텍스트, TriggerData))
이것이 true를 반환하면 캐스팅하는 것이 안전합니다.fcinfo-컨텍스트입력하려면무지개 토토데이터 *그리고 가리키는 것을 활용무지개 토토데이터구조. 기능 필수아님변경무지개 토토데이터구조 또는 다음 중 하나 그것이 가리키는 데이터입니다.
구조 TriggerData다음에 정의됨명령/trigger.h:
typedef 구조체 TriggerData
NodeTag 유형;
TriggerEvent tg_event;
관계 tg_relation;
힙튜플 tg_trigtuple;
힙튜플 tg_newtuple;
무지개 토토 *tg_trigger;
TriggerData;
여기서 구성원은 다음과 같이 정의됩니다:
항상T_TriggerData만약 이것이라면 무지개 토토 이벤트입니다.
함수가 호출되는 이벤트를 설명합니다. 다음 매크로를 사용하여 조사할 수 있습니다.tg_event:
이전에 무지개 토토가 실행되면 TRUE를 반환합니다.
이후에 무지개 토토가 실행되면 TRUE를 반환합니다.
ROW 수준에 대해 무지개 토토가 실행되면 TRUE를 반환합니다. 이벤트.
STATEMENT 수준에 대해 무지개 토토가 실행되면 TRUE를 반환합니다. 이벤트.
INSERT에 의해 무지개 토토가 실행되면 TRUE를 반환합니다.
DELETE에 의해 무지개 토토가 실행되면 TRUE를 반환합니다.
업데이트에 의해 무지개 토토가 실행되면 TRUE를 반환합니다.
은 무지개 토토된 구조를 설명하는 구조에 대한 포인터입니다. 관계. 보세요utils/rel.h용 이 구조에 대한 세부정보입니다. 가장 흥미로운 것들 이다tg_relation-rd_att(관계 튜플의 설명자) 및tg_relation-rd_rel-relname(관계 이름. 이것은 아님문자*, 하지만이름데이터. 사용SPI_getrelname(tg_relation)얻다문자*사본이 필요한 경우 이름).
는 무지개 토토가 실행되는 튜플에 대한 포인터입니다. 해고되었습니다. 이는 삽입되는 튜플입니다(INSERT인 경우). 삭제(DELETE인 경우) 또는 업데이트(UPDATE인 경우)됩니다. 만약에 INSERT/DELETE 다음으로 돌아갑니다. 튜플을 다른 튜플로 교체하고 싶지 않은 경우 실행자 하나(INSERT) 또는 작업을 건너뜁니다.
업데이트된 경우 튜플의 새 버전에 대한 포인터이고NULLINSERT 또는 삭제. 다음과 같은 경우 Executor로 반환해야 합니다. 업데이트하고 이 튜플을 다음으로 바꾸고 싶지 않습니다. 다른 것을 선택하거나 작업을 건너뛰세요.
구조에 대한 포인터입니다.무지개 토토에 정의됨utils/rel.h:
typedef 구조체 무지개 토토
이드 tgoid;
char *tgname;
Oid tgfoid;
int16 tgtype;
bool tg활성화됨;
bool tgisconstraint;
Oid tgconstrrelid;
bool tgdeferrable;
bool tginitdeferred;
int16 tgnars;
int16 tgattr[FUNC_MAX_ARGS];
char **tgargs;
무지개 토토;
어디에서tgname이것은 무지개 토토 이름,tgnars이다 인수 수tgargs, tgargs은 포인터 배열입니다. CREATE TRIGGER 문에 지정된 인수에 적용됩니다. 다른 구성원은 내부 전용입니다.