지원되지 않는 버전 :7.3 / 7.2 / 7.1
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

16.2. 무지개 토토와의 상호 작용 관리자

이 섹션에서는 인터페이스의 낮은 수준 세부 사항에 대해 설명합니다 무지개 토토 함수에. 이 정보는 때만 필요합니다 C에서 무지개 토토 함수 작성 기능 언어 그러면이 세부 사항은 당신을 위해 처리됩니다.

참고 :여기에 설명 된 인터페이스는에 적용됩니다.PostgreSQL7.1 이상. 이전 버전이를 통과했습니다.TriggerData글로벌 변수의 포인터CurrentTriggerData.

무지개 토토 관리자가 함수를 호출하면 정상적인 매개 변수를 전달했지만 전달됩니다"컨텍스트"포인터를 가리키는 포인터TriggerData구조. C 함수는 확인할 수 있습니다 그들이 무지개 토토 매니저로부터 부름을 받았는지 여부 매크로 실행pall_as_trigger (fcinfo)

((fcinfo)- context! = null && isa ((fcinfo)- context, triggerdata)

이것이 진실을 반환하면 캐스트하는 것이 안전합니다fcinfo- 컨텍스트to TypeTriggerData *TriggerData구조. 기능 해야 하다not변경TriggerData구조 또는 그것은 그것을 가리킨다.

StrugerData명령/trigger.h:

typedef strugdatigdata

    nodetag 유형;
    triggerevent tg_event;
    관계 tg_relation;
    heappuple tg_trigtuple;
    heappuple tg_newtuple;
    무지개 토토 *tg_trigger;
 triggerData;

회원이 다음과 같이 정의되는 곳 :

타입

항상t_triggerData이것이 있다면 무지개 토토 이벤트.

tg_event

함수가 호출되는 이벤트를 설명합니다. 다음 매크로를 사용하여 검사 할 수 있습니다tg_event:

trigger_fired_before (tg_event)

이전에 무지개 토토가 발사되면 TRUE를 반환합니다.

trigger_fired_after (tg_event)

무지개 토토가 발사되면 TRUE를 반환합니다.

trigger_fired_for_row (이벤트)

무지개 토토가 행 레벨에 해고 된 경우 TRUE를 반환합니다 이벤트.

trigger_fired_for_statement (이벤트)

명령문 수준에 대한 무지개 토토가 발사 된 경우 true를 반환합니다 이벤트.

trigger_fired_by_insert (이벤트)

Insert에 의해 무지개 토토가 발사되면 true를 반환합니다.

trigger_fired_by_delete (이벤트)

DELETE로 무지개 토토를 발사하면 TRUE를 반환합니다.

trigger_fired_by_update (이벤트)

업데이트로 무지개 토토가 발사 된 경우 true를 반환합니다.

TG_RELATION

무지개 토토를 설명하는 구조에 대한 포인터입니다 관계. 보기utils/rel.h이 구조에 대한 세부 사항. 가장 흥미로운 것들 이다tg_relation- rd_att(관계 튜플의 설명 자) 및tg_relation- rd_rel- relname(관계의 이름. 이것은 아닙니다char*, 하지만paminata. 사용spi_getrelname (tg_relation)getchar*사본이 필요한 경우 이름).

tg_trigtuple

무지개 토토가있는 튜플에 대한 포인터입니다. 해고. 이것은 삽입되는 튜플 (삽입 된 경우)입니다. 삭제 (삭제 된 경우) 또는 업데이트 (업데이트 인 경우). 만약에 삽입/삭제 한 다음 이것은 당신이 돌아올 것입니다. 튜플을 다른 것으로 바꾸고 싶지 않다면 집행자 하나 (삽입) 또는 작업을 건너 뛰십시오.

tg_newtuple

update and의 새 버전의 튜플에 대한 포인터입니다.null이것이 삽입 또는 a 삭제. 이것은 당신이 집행자에게 돌아 오는 것입니다. 업데이트하면이 튜플을 대체하고 싶지 않습니다. 다른 하나 또는 작업을 건너 뛰십시오.

tg_trigger

구조에 대한 포인터무지개 토토정의utils/rel.h:

typedef 구조 무지개 토토

    oid tgoid;
    char *tgname;
    OID tgfoid;
    int16 tgtype;
    bool tgenabled;
    부울 tgisconstraint;
    Oid tgconstrelid;
    bool tgdeferrable;
    bool tginitdeferred;
    int16 tgnargs;
    int16 tgattr [func_max_args];
    char ** tgargs;
 방아쇠;

여기서tgnameis 무지개 토토 이름,tgnargsis 의 논쟁 수tgargs, tgargs는 많은 포인터입니다 생성 무지개 토토 문에 명시된 인수에. 다른 회원은 내부 사용만을위한 것입니다.