이 섹션에서는 인터페이스의 낮은 수준 세부 사항에 대해 설명합니다 배트맨 토토 함수에. 이 정보는 때만 필요합니다 C에서 배트맨 토토 함수 작성 기능 언어 그러면이 세부 사항은 당신을 위해 처리됩니다.
참고 :여기에 설명 된 인터페이스는에 적용됩니다.PostgreSQL7.1 이상. 이전 버전은 전역에서 TriggerData 포인터를 통과했습니다 변수 currentTriggerData.
배트맨 토토 관리자가 함수를 호출하면 정상적인 매개 변수를 전달했지만 전달됩니다"컨텍스트"TriggerData를 가리키는 포인터 구조. C 기능은 호출되었는지 확인할 수 있습니다 매크로를 실행하여 방아쇠 관리자가 아닌지pall_as_trigger (fcinfo)
((fcinfo)- context! = null && isa ((fcinfo)- context, triggerdata)
이것이 진실을 반환하면 캐스트하는 것이 안전합니다. fcinfo- 유형에 대한 컨텍스트TriggerData *그리고 뾰족한 triggerdata 구조를 사용하십시오. 그만큼 함수는not변경 TriggerData 구조 또는 그것이 가리키는 데이터.
struct triggerdata가 정의되어 있습니다 src/include/commands/trigger.h :
typedef strugdata nodetag 유형; triggerevent tg_event; 관계 tg_relation; heappuple tg_trigtuple; heappuple tg_newtuple; 배트맨 토토 *tg_trigger; triggerData;
회원이 다음과 같이 정의되는 곳 :
항상t_triggerData이것이 있다면 배트맨 토토 이벤트.
함수가 호출되는 이벤트를 설명합니다. 다음 매크로를 사용하여 검사 할 수 있습니다tg_event:
이전에 배트맨 토토가 발사되면 TRUE를 반환합니다.
배트맨 토토가 발사되면 TRUE를 반환합니다.
배트맨 토토가 줄 수준으로 발사 된 경우 TRUE를 반환합니다 이벤트.
명령문 수준에 대한 배트맨 토토가 발사 된 경우 true를 반환합니다 이벤트.
Insert에 의해 배트맨 토토가 발사되면 true를 반환합니다.
DELETE로 배트맨 토토를 발사 한 경우 true를 반환합니다.
업데이트로 배트맨 토토가 발사 된 경우 True를 반환합니다.
는 배트맨 토토 된 것을 설명하는 구조에 대한 포인터입니다 관계. 자세한 내용은 src/include/utils/rel.h를 참조하십시오 이 구조. 가장 관심있는 것은입니다 tg_relation- rd_att (관계 튜플의 설명 자) 및 tg_relation- rd_rel- relname (관계의 이름. 이것은 char*가 아니라 pamedata입니다. 사용 spi_getrelname (tg_relation)을 얻으려면 사본이 필요한 경우 char*를 얻습니다 이름).
배트맨 토토가있는 튜플에 대한 포인터입니다. 해고. 이것은 삽입되는 튜플 (삽입 된 경우)입니다. 삭제 (삭제 된 경우) 또는 업데이트 (업데이트 인 경우). 만약에 삽입/삭제 한 다음 이것은 당신이 돌아올 것입니다. 튜플을 다른 것으로 바꾸고 싶지 않다면 집행자 하나 (삽입) 또는 작업을 건너 뛰십시오.
| 삽입 또는 삭제 용인 경우 NULL. 이것이 당신의 것입니다 업데이트하면 집행자에게 돌아와서 원하지 않는 경우 이 튜플을 다른 튜플로 교체하거나 건너 뛰십시오 작업.
는 정의 된 구조 배트맨 토토에 대한 포인터입니다 src/include/utils/rel.h :
typedef 구조 배트맨 토토 oid tgoid; char *tgname; OID tgfoid; int16 tgtype; bool tgenabled; 부울 tgisconstraint; bool tgdeferrable; bool tginitdeferred; int16 tgnargs; int16 tgattr [func_max_args]; char ** tgargs; 방아쇠;
tgname이 방아쇠의 이름 인 곳에서 tgnargs는 tgargs의 논쟁, tgargs는 생성 배트맨 토토 문에 지정된 인수. 다른 회원은 내부 사용만을위한 것입니다.