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

방아쇠 관리자

위에서 언급했듯이 윈 토토가 함수를 호출 할 때 구조 TriggerData *CurrentTriggerData가 NULL이 아닙니다 초기화. 따라서 CurrentTriggerData를 확인하는 것이 좋습니다 처음에는 null이고 윈 토토 기능에 대한 호출을 방지하기위한 정보는 방아쇠 관리자.

struct triggerdata가 정의되어 있습니다 src/include/commands/trigger.h :

typedef strugdatigdata

    triggerevent tg_event;
    관계 tg_relation;
    heappuple tg_trigtuple;
    heappuple tg_newtuple;
    윈 토토 *tg_trigger;
 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

는 윈 토토 된 관계를 설명하는 구조에 대한 포인터입니다. 이에 대한 자세한 내용은 src/include/utils/rel.h를 참조하십시오 구조. 가장 관심있는 것은 tg_relation- rd_att입니다 (관계 튜플의 설명 자) 및 tg_relation- rd_rel- relname (관계의 이름. 이것은입니다 char*가 아니라 이름이 지정되었습니다. spi_getrelname (tg_relation)을 사용하여 얻을 수 있습니다 char* 이름 사본이 필요한 경우).

tg_trigtuple

는 윈 토토가 발사되는 튜플에 대한 포인터입니다. 이것은 삽입되는 튜플입니다 (삽입 된 경우) 삭제 (if. 삭제) 또는 업데이트 (업데이트 인 경우). 삽입/삭제되면 이것이입니다 교체하고 싶지 않다면 집행자에게 돌아갈 것 다른 하나와 튜플 (삽입) 또는 작업을 건너 뜁니다.

tg_newtuple

업데이트 및 null이면 튜플의 새 버전에 대한 포인터입니다. 삽입 또는 삭제 용인 경우. 이것이 당신의 것입니다 업데이트하면 Executor로 돌아 가면이를 교체하고 싶지 않습니다. 다른 하나와 튜플 또는 작업을 건너 뜁니다.

tg_trigger

는 정의 된 구조 윈 토토에 대한 포인터입니다 src/include/utils/rel.h :

typedef 구조 윈 토토

    oid tgoid;
    char *tgname;
    OID tgfoid;
    fmgrinfo tgfunc;
    int16 tgtype;
    bool tgenabled;
    부울 tgisconstraint;
    bool tgdeferrable;
    bool tginitdeferred;
    int16 tgnargs;
    int16 tgattr [func_max_args];
    char ** tgargs;
 방아쇠;
Tgname이 방아쇠의 이름 인 곳에서 tgnargs는 tgargs의 논쟁, tgargs는 생성 윈 토토 문에 지정된 인수. 다른 회원 내부 사용만을위한 것입니다.