Postgres다양한 클라이언트가 있습니다 Perl, TCL, Python 및 C와 같은 인터페이스 및 2절차 언어(pl). 그것은 또한 트리거 조치로 C 기능을 호출 할 수 있습니다. 주목하십시오 명령문 수준 트리거 이벤트는 현재에서 지원되지 않습니다 버전. 현재 삽입 전후에 지정할 수 있습니다. 트리거 이벤트로 튜플 삭제 또는 업데이트.
토토 결과 이벤트가 발생하면 토토 결과 관리자 ( 집행자)는 글로벌 구조 TriggerData를 초기화합니다 *CurrentTriggerData (아래 설명) 및 토토 결과를 호출합니다 이벤트 처리 기능.
토토 결과 기능은 토토 결과가되기 전에 생성해야합니다. 인수를 취하지 않고 불투명 한 기능으로 생성됩니다.
토토 결과 생성을위한 구문은 다음과 같습니다.
트리거 작성 <트리거 이름 <이전 | 후 <삽입 | 삭제 | 업데이트 각각의 <row | statement에 대한 <관계 이름 절차 실행 <절차 이름 (<function args);
토토 결과 이름은 삭제 해야하는 경우 사용됩니다. 방아쇠. 드롭 토토 결과 명령에 대한 인수로 사용됩니다.
다음 단어는 기능이 이전에 호출되었는지 여부를 결정합니다. 또는 이벤트 후.
명령의 다음 요소는 어떤 이벤트를 결정합니다. 기능을 트리거하십시오. 여러 이벤트를 지정할 수 있습니다 또는.
관계 이름은 이벤트가 적용되는 테이블을 결정합니다 에게.
각 명령문의 경우 토토 결과가 발사되었는지 여부가 결정됩니다. 영향을받는 각 행 또는 전 (또는 그 이후)에 대해 전체 진술은 완전한.
프로 시저 이름은 C로 호출 된 C 함수입니다.
args는 currentTriggerData의 함수로 전달됩니다. 구조. 기능에 인수를 전달하는 목적은 비슷한 요구 사항을 가진 다른 토토 결과를 허용하여 동일하게 호출하십시오. 기능.
또한 다른 관계를 토토 결과하는 데 기능이 사용될 수 있습니다 (이 기능은 "일반 토토 결과 기능"으로 명명 됨).
위의 두 기능을 사용하는 예는 인수로서 두 개의 필드 이름과 현재 사용자를 하나로 그리고 현재 타임 스탬프를 다른. 이를 통해 트리거 삽입 이벤트에서 트리거를 작성할 수 있습니다. 거래 테이블에서 레코드 생성을 자동으로 추적합니다. 예. 사용하는 경우 "마지막 업데이트 된"기능으로 사용될 수도 있습니다. 업데이트 이벤트에서.
트리거 함수는 호출 집행자에게 반환됩니다. 이것 인서트, 삭제 또는 업데이트 후 발사 된 트리거에 대해 무시됩니다. 작동하지만 트리거 앞에 : - 리턴 NULL을 건너 뛸 수 있습니다. 현재 튜플 작업 (그리고 튜플은 삽입/업데이트/삭제); - 다른 튜플로 포인터를 반환하십시오 (삽입 및 업데이트 만) 삽입 될 (새 버전으로 업데이트 된 튜플의 업데이트) 원래 튜플 대신
토토 결과 핸들러. 이것은 앞으로 변경 될 것입니다. 또한 더 많은 경우 동일한 이벤트에 대해 하나의 토토 결과가 동일한 이벤트에 대해 정의됩니다. 관계, 방아쇠 발사 순서는 예측할 수 없습니다. 이것은 될 수 있습니다 미래에 변경되었습니다.
토토 결과 함수가 SQL-Queries (SPI 사용)를 실행하는 경우 이 쿼리는 다시 토토 결과를 발사 할 수 있습니다. 이것은 계단식이라고합니다 토토 결과. 캐스케이드 수에는 명시적인 제한이 없습니다. 레벨.
트리거가 삽입하여 발사되고 새 튜플을 같은 관계는이 트리거가 다시 발사됩니다. 현재, 이 경우 동기화 (ETC)에 제공되는 것은 없습니다. 그러나 이것은 변할 수 있습니다. 현재 기능이 있습니다. funny_dup17 () 재귀를 막기 위해 일부 기술을 사용하는 회귀 테스트에서 (계단식) 그 자체 ...