이 섹션에서는 인터페이스의 하위 수준 세부정보를 설명합니다. 범퍼카 토토 기능으로. 이 정보는 다음 경우에만 필요합니다. 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;
TriggerData;
여기서 구성원은 다음과 같이 정의됩니다:
항상T_TriggerData.
함수가 호출되는 이벤트를 설명합니다. 다음 매크로를 사용하여 조사할 수 있습니다.tg_event:
범퍼카 토토가 실행되기 전에 실행되면 true를 반환합니다. 작동합니다.
다음에 범퍼카 토토가 실행되면 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 tgnattr;
int16 *tgattr;
char **tgargs;
범퍼카 토토;
어디에서tgname이것은 범퍼카 토토 이름,tgnars이다 인수 수tgargs, 그리고tgargs은 다음의 배열입니다. 에 지정된 인수에 대한 포인터범퍼카 토토 생성성명. 다른 멤버들 내부용으로만 사용됩니다.
다음을 포함하는 버퍼tg_trigttuple또는잘못된 버퍼그러한 튜플이 없거나 디스크 버퍼에 저장되지 않습니다.
다음을 포함하는 버퍼tg_newtuple또는잘못된 버퍼그러한 튜플이 없거나 디스크 버퍼에 저장되지 않습니다.
범퍼카 토토 함수는 다음 중 하나를 반환해야 합니다.힙튜플포인터 또는 aNULL포인터 (아님SQL null 값, 즉 do 설정되지 않음isNull참). 주의하세요 둘 중 하나를 반환tg_trigttuple또는tg_newtuple, 적절하다면 작업 중인 행을 수정하고 싶지 않습니다.