이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 37.3. C의 롤 토토 사이트 순위 기능 작성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

36.3. C의 토토 사이트 순위 기능 작성

이 섹션은 인터페이스의 낮은 수준 세부 사항에 대해 설명합니다. 토토 사이트 순위 함수. 이 정보는 글쓰기 시만 필요합니다 C.의 토토 사이트 순위 함수는 더 높은 수준의 언어를 사용하는 경우 그런 다음 이러한 세부 사항이 처리됩니다. 대부분의 경우 당신은해야합니다 토토 사이트 순위를 작성하기 전에 절차 언어를 사용하는 것을 고려하십시오 C.에서 각 절차 언어의 문서는 방법을 설명합니다. 그 언어로 방아쇠를 쓰십시오.

토토 사이트 순위 함수는를 사용해야합니다."버전 1 "기능 관리자 인터페이스.

토토 사이트 순위 관리자가 함수를 호출하면 정상적인 주장을 통과했지만 통과됩니다"컨텍스트"포인터를 가리키는 포인터TriggerData구조. C 함수는 확인할 수 있습니다 그들이 토토 사이트 순위 매니저로부터 부름을 받았는지 여부 매크로 실행 :

pall_as_trigger (fcinfo)

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

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

struct triggerdata명령/trigger.h:

typedef strugdata

    nodetag 유형;
    triggerevent tg_event;
    관계 tg_relation;
    heappuple tg_trigtuple;
    heappuple tg_newtuple;
    토토 사이트 순위 *tg_trigger;
    버퍼 TG_TRIGTUPLEBUF;
    버퍼 TG_NEWTUPLEBUF;
 triggerData;

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

타입

항상t_triggerData.

tg_event

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

trigger_fired_before (tg_event)

수술 전에 토토 사이트 순위가 발사 된 경우 true를 반환합니다.

trigger_fired_after (tg_event)

수술 후 토토 사이트 순위가 발사 된 경우 true를 반환합니다.

trigger_fired_instead (tg_event)

작업 대신 토토 사이트 순위가 발사 된 경우 TRUE를 반환합니다.

trigger_fired_for_row (tg_event)

토토 사이트 순위가로드 레벨 이벤트에 해고 된 경우 true를 반환합니다.

trigger_fired_for_statement (tg_event)

진술 수준에 대한 토토 사이트 순위가 발사 된 경우 True를 반환합니다 이벤트.

trigger_fired_by_insert (tg_event)

토토 사이트 순위가 해고 된 경우 true를 반환합니다삽입명령.

trigger_fired_by_update (tg_event)

토토 사이트 순위가 해고 된 경우 true를 반환합니다업데이트명령.

trigger_fired_by_delete (tg_event)

토토 사이트 순위가 a에 해고 된 경우 true를 반환합니다.삭제명령.

trigger_fired_by_truncate (tg_event)

토토 사이트 순위가 a에 해고 된 경우 true를 반환합니다.Truncate명령.

tg_relation

토토 사이트 순위가 발사되었습니다. 보기utils/rel.h이 구조에 대한 자세한 내용. 가장 흥미로운 것은입니다.tg_relation- rd_att(설명 자의 설명 자 관계 튜플) 및tg_relation- rd_rel- relname(관계 이름; 유형은char*하지만paminata; 사용spi_getrelname (tg_relation)achar*이름의 사본이 필요한 경우).

tg_trigtuple

토토 사이트 순위가 발사 된 행을위한 포인터. 이것은 행이 삽입, 업데이트 또는 삭제됩니다. 이 방아쇠라면 해고삽입또는삭제그러면 이것이 당신이 다시 돌아와야 할 것입니다 행을 다른 행으로 교체하고 싶지 않은 경우 기능 (의 경우삽입) 또는 건너 뛰십시오 작업.

tg_newtuple

토토 사이트 순위가있는 경우 행의 새 버전에 대한 포인터 해고업데이트null삽입또는 a삭제. 이것이 당신이해야 할 것입니다 이벤트가 an이면 함수에서 반환업데이트그리고 당신은이 행을 다른 하나 또는 작업을 건너 뜁니다.

tg_trigger

유형 구조에 대한 포인터토토 사이트 순위, 정의utils/reltrigger.h:

typedef 구조 토토 사이트 순위

    oid tgoid;
    char *tgname;
    OID tgfoid;
    int16 tgtype;
    문자;
    bool tgisinternal;
    Oid tgconstrelid;
    Oid tgconstrindid;
    Oid tgconstraint;
    bool tgdeferrable;
    bool tginitdeferred;
    int16 tgnargs;
    int16 tgnattr;
    int16 *tgattr;
    char ** tgargs;
    char *tgqual;
 방아쇠;

여기서tgnameTrigger의 이름입니다.tgnargs의 수는입니다.tgargstgargs는 인수에 대한 많은 포인터입니다 에 지정됨토토 사이트 순위 만들기진술. 다른 회원은 내부 사용만을위한 것입니다.

TG_TRIGTUPLEBUF

버퍼를 포함하는tg_trigtuple, 또는invalidbuffer그러한 튜플이없는 경우 또는 디스크 버퍼에 저장되지 않습니다.

TG_NEWTUPLEBUF

버퍼를 포함하는tg_newtuple, 또는invalidbuffer그러한 튜플이없는 경우 또는 디스크 버퍼에 저장되지 않습니다.

토토 사이트 순위 함수는 a를 반환해야합니다.heappuple포인터 또는 ANULL포인터 (notSQL NULL 값, 즉 그렇습니다 설정되지 않음isnulltrue). 조심하십시오 반품tg_trigtuple또는tg_newtuple, 적절한 경우 작동중인 행을 수정하고 싶지 않습니다.