이 섹션에서는 인터페이스의 하위 수준 세부정보를 설명합니다. 토토 꽁 머니 기능으로. 이 정보는 다음 경우에만 필요합니다. C로 토토 꽁 머니 함수를 작성합니다. 더 높은 수준의 언어를 사용하면 이러한 세부정보가 자동으로 처리됩니다. 그만큼 각 절차적 언어에 대한 문서에서는 작성 방법을 설명합니다. 해당 언어로 토토 꽁 머니합니다.
토토 꽁 머니 기능은 다음을 사용해야 합니다."버전 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;
    버퍼 tg_trigtuplebuf;
    버퍼 tg_newtuplebuf;
 TriggerData;
  여기서 구성원은 다음과 같이 정의됩니다:
항상T_TriggerData.
함수가 호출되는 이벤트를 설명합니다. 다음 매크로를 사용하여 조사할 수 있습니다.tg_event:
토토 꽁 머니가 실행되기 전에 실행되면 참을 반환합니다. 작업.
다음 이후에 토토 꽁 머니가 실행되면 true를 반환합니다. 작업.
행 수준에 대해 토토 꽁 머니가 실행되면 true를 반환합니다. 이벤트.
토토 꽁 머니가 다음에 대해 실행되면 참을 반환합니다. 명령문 수준 이벤트입니다.
토토 꽁 머니가 다음에 의해 실행된 경우 true를 반환합니다.삽입명령.
토토 꽁 머니가 다음에 의해 실행된 경우 참을 반환합니다.업데이트명령.
토토 꽁 머니가 다음에 의해 실행된 경우 참을 반환합니다.삭제명령.
관계를 설명하는 구조에 대한 포인터 방아쇠가 발사되었습니다. 보세요utils/rel.h이에 대한 자세한 내용은 구조. 가장 흥미로운 점은 다음과 같습니다.tg_relation-rd_att(설명자 관계 튜플) 및tg_relation-rd_rel-relname(관계 이름; 유형이 아닙니다.문자*하지만이름데이터; 사용SPI_getrelname(tg_relation)을 얻으려면문자*사본이 필요한 경우 이름).
토토 꽁 머니가 실행된 행에 대한 포인터. 삽입, 업데이트 또는 삭제되는 행입니다. 만약에 이 토토 꽁 머니는 다음에 대해 실행되었습니다.삽입또는삭제다음은 다음과 같은 경우 함수에서 반환해야 하는 것입니다. 행을 다른 행으로 바꾸고 싶지 않습니다( 의 경우삽입) 또는 건너뛰기 작업.
토토 꽁 머니가 있는 경우 행의 새 버전에 대한 포인터 해고당했습니다.업데이트및NULL만약에 대한 것이라면삽입또는 a삭제. 이것이 다음과 같은 경우 함수에서 반환해야 하는 것입니다. 이벤트는업데이트그리고 당신은 그렇지 않아요 이 행을 다른 행으로 바꾸거나 건너뛰고 싶습니다. 작업.
유형의 구조에 대한 포인터토토 꽁 머니, 정의됨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는 배열입니다 에 지정된 인수에 대한 포인터토토 꽁 머니 생성성명. 다른 멤버들 내부용으로만 사용됩니다.
다음을 포함하는 버퍼tg_trigttuple또는잘못된 버퍼그러한 튜플이 없거나 디스크 버퍼에 저장되지 않습니다.
다음을 포함하는 버퍼tg_newtuple또는잘못된 버퍼그러한 튜플이 없거나 디스크 버퍼에 저장되지 않습니다.
토토 꽁 머니 함수는 다음 중 하나를 반환해야 합니다.힙튜플포인터 또는 aNULL포인터 (아님SQL null 값, 즉 do 설정되지 않음isNull참). 주의하세요 둘 중 하나를 반환tg_trigttuple또는tg_newtuple, 적절하다면 작업 중인 행을 수정하고 싶지 않습니다.