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

39.3. C에서 스포츠 토토 결과 함수 작성

이 섹션에서는 스포츠 토토 결과 기능 인터페이스의 하위 수준 세부정보를 설명합니다. 이 정보는 C에서 스포츠 토토 결과 함수를 작성할 때만 필요합니다. 고급 언어를 사용하는 경우 이러한 세부 정보가 자동으로 처리됩니다. 대부분의 경우 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;
    Tuplestorestate *tg_oldtable;
    Tuplestorestate *tg_newtable;
 TriggerData;

여기서 구성원은 다음과 같이 정의됩니다.

유형

항상T_TriggerData.

tg_event

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

TRIGGER_FIRED_BEFORE(tg_event)

작업 전에 스포츠 토토 결과가 실행되면 참을 반환합니다.

TRIGGER_FIRED_AFTER(tg_event)

작업 후 스포츠 토토 결과가 실행되면 true를 반환합니다.

TRIGGER_FIRED_INSTEAD(tg_event)

작업 대신 스포츠 토토 결과가 실행되면 true를 반환합니다.

TRIGGER_FIRED_FOR_ROW(tg_event)

행 수준 이벤트에 대해 스포츠 토토 결과가 실행되면 참을 반환합니다.

TRIGGER_FIRED_FOR_STATEMENT(tg_event)

문 수준 이벤트에 대해 스포츠 토토 결과가 실행되면 참을 반환합니다.

TRIGGER_FIRED_BY_INSERT(tg_event)

스포츠 토토 결과가 다음에 의해 실행된 경우 참을 반환합니다.삽입명령.

TRIGGER_FIRED_BY_UPDATE(tg_event)

스포츠 토토 결과가 다음에 의해 실행된 경우 참을 반환합니다.업데이트명령.

TRIGGER_FIRED_BY_DELETE(tg_event)

스포츠 토토 결과가 다음에 의해 실행된 경우 참을 반환합니다.삭제명령.

TRIGGER_FIRED_BY_TRUNCATE(tg_event)

스포츠 토토 결과가 다음에 의해 실행된 경우 참을 반환합니다.잘라내기명령.

tg_relation

스포츠 토토 결과가 실행된 관계를 설명하는 구조에 대한 포인터입니다. 보세요utils/rel.h이 구조에 대한 자세한 내용을 확인하세요. 가장 흥미로운 점은 다음과 같습니다.tg_relation-rd_att(관계 튜플의 설명자) 및tg_relation-rd_rel-relname(관계 이름; 유형이 아님문자*그러나이름데이터; 사용SPI_getrelname(tg_relation)을 얻으려면문자*이름 사본이 필요한 경우).

tg_trigttuple

스포츠 토토 결과가 실행된 행에 대한 포인터입니다. 삽입, 업데이트 또는 삭제되는 행입니다. 이 스포츠 토토 결과가 다음에 대해 실행된 경우삽입또는삭제다음 행을 다른 행으로 바꾸지 않으려면 함수에서 반환해야 하는 내용입니다(의 경우삽입) 또는 작업을 건너뜁니다. 외부 테이블에 대한 스포츠 토토 결과의 경우 여기에 있는 시스템 열의 값이 지정되지 않습니다.

tg_newtuple

스포츠 토토 결과가 다음에 대해 실행된 경우 행의 새 버전에 대한 포인터업데이트NULL만일 그것이라면삽입또는 a삭제. 이벤트가 다음과 같은 경우 함수에서 반환해야 하는 내용입니다.업데이트그리고 당신은 이 행을 다른 행으로 교체하거나 작업을 건너뛰기를 원하지 않습니다. 외부 테이블에 대한 스포츠 토토 결과의 경우 여기에 있는 시스템 열의 값은 지정되지 않습니다.

tg_trigger

유형의 구조에 대한 포인터스포츠 토토 결과, 정의됨utils/reltrigger.h:

typedef 구조체 스포츠 토토 결과

    이드 tgoid;
    char *tgname;
    Oid tgfoid;
    int16 tgtype;
    차트 활성화;
    bool tgisinternal;
    Oid tgconstrrelid;
    Oid tgconstrindid;
    Oid tg제약;
    bool tgdeferrable;
    bool tginitdeferred;
    int16 tgnars;
    int16 tgnattr;
    int16 *tgattr;
    char **tgargs;
    char *tgqual;
    char *tgoldtable;
    char *tgnewtable;
 스포츠 토토 결과;

어디에서tgname스포츠 토토 결과의 이름입니다.tgnars는 다음의 인수 수입니다.tgargstgargs은에 지정된 인수에 대한 포인터 배열입니다.스포츠 토토 결과 생성성명. 다른 구성원은 내부 전용입니다.

tg_trigtuplebuf

다음을 포함하는 버퍼tg_trigttuple, 또는잘못된 버퍼그러한 튜플이 없거나 디스크 버퍼에 저장되지 않은 경우.

tg_newtuplebuf

다음을 포함하는 버퍼tg_newtuple, 또는잘못된 버퍼그러한 튜플이 없거나 디스크 버퍼에 저장되지 않은 경우.

tg_oldtable

유형의 구조에 대한 포인터Tuplestorestate다음에 의해 지정된 형식으로 0개 이상의 행을 포함합니다.tg_relation또는 aNULL포인터가 없으면 포인터이전 테이블전환 관계.

tg_newtable

유형의 구조에 대한 포인터Tuplestorestate다음에 의해 지정된 형식으로 0개 이상의 행을 포함합니다.tg_relation또는 aNULL포인터가 없으면 포인터새 테이블전환 관계.

SPI를 통해 발행된 쿼리가 전환 테이블을 참조하도록 허용하려면 다음을 참조하세요.SPI_register_trigger_data.

스포츠 토토 결과 함수는 다음 중 하나를 반환해야 합니다.힙튜플포인터 또는 aNULL포인터 (아님SQL null 값, 즉 설정하지 않음isNull참). 다음 중 하나를 반환할 때는 주의하세요.tg_trigttuple또는tg_newtuple, 작업 중인 행을 수정하지 않으려는 경우 적절합니다.