이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

상호작용 윈 토토 관리자

위에서 언급한 바와 같이 윈 토토에 의해 함수가 호출될 때 관리자, 구조 TriggerData *CurrentTriggerData는 NULL이 아니며 초기화되었습니다. 따라서 CurrentTriggerData를 확인하는 것이 좋습니다. 처음에는 NULL이고 가져온 직후에 NULL로 설정됩니다. 다른 곳에서 윈 토토 함수를 호출하는 것을 방지하기 위한 정보 윈 토토 관리자.

구조 TriggerData는 다음에 정의되어 있습니다. src/include/commands/trigger.h:

typedef 구조체 TriggerData

    TriggerEvent tg_event;
    관계 tg_relation;
    힙튜플 tg_trigtuple;
    힙튜플 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(이벤트)

ROW 수준 이벤트에 대해 윈 토토가 실행되면 TRUE를 반환합니다.

TRIGGER_FIRED_FOR_STATEMENT(이벤트)

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*가 아니라 NameData입니다. SPI_getrelname(tg_relation)을 사용하여 가져옵니다. 이름 사본이 필요한 경우 char*).

tg_trigttuple

은 윈 토토가 실행되는 튜플에 대한 포인터입니다. 이는 삽입되는(INSERT인 경우) 튜플이고, 삭제되는(인 경우) DELETE) 또는 업데이트되었습니다(업데이트된 경우). INSERT/DELETE인 경우에는 다음과 같습니다. 교체하고 싶지 않은 경우 Executor에 반환할 내용 다른 것으로 튜플하거나(INSERT) 작업을 건너뜁니다.

tg_newtuple

업데이트 및 NULL인 경우 새 버전의 튜플에 대한 포인터입니다. INSERT 또는 DELETE용인 경우. 이것이 당신이 할 일입니다 업데이트하고 이를 교체하고 싶지 않은 경우 Executor로 돌아갑니다. 다른 것과 튜플하거나 작업을 건너뜁니다.

tg_trigger

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

typedef 구조체 윈 토토

    이드 tgoid;
    char *tgname;
    Oid tgfoid;
    FmgrInfo tgfunc;
    int16 tgtype;
    bool tg활성화됨;
    bool tgisconstraint;
    bool tgdeferrable;
    bool tginitdeferred;
    int16 tgnars;
    int16 tgattr[FUNC_MAX_ARGS];
    char **tgargs;
 방아쇠;
여기서 tgname은 윈 토토의 이름이고, tgnargs는 윈 토토의 수입니다. tgargs의 인수, tgargs는 tgargs에 대한 포인터 배열입니다. CREATE TRIGGER 문에 지정된 인수입니다. 다른 회원 내부용으로만 사용됩니다.