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