이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다와이즈 토토 : 문서 : 17 : 37 장. 트리거버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

35 장. 와이즈 토토

이 장에서는 와이즈 토토 기능을 작성하는 방법을 설명합니다. 방아쇠 기능은 C 또는 사용 가능한 일부에서 작성할 수 있습니다. 절차 언어. 현재 a SQL 언어 와이즈 토토 기능.

35.1. 와이즈 토토 개요 행동

와이즈 토토는 AN 전후에 실행하도록 정의 될 수 있습니다삽입, 업데이트또는삭제작동, 수정 된 행당 한 번 또는 당시 한 번SQL진술. 와이즈 토토 인 경우 이벤트가 발생하면 와이즈 토토의 기능이 호출됩니다 이벤트를 처리하기에 적절한 시간.

와이즈 토토 함수는 와이즈 토토 전에 정의되어야합니다 그 자체가 만들 수 있습니다. 와이즈 토토 함수는 다음과 같이 선언해야합니다 인수가없고 유형을 반환하는 함수와이즈 토토. (와이즈 토토 함수는 그것의 와이즈 토토 기능을받습니다 특수 통과를 통한 입력TriggerData구조, 형태가 아닙니다 일반 기능 인수.)

일단 적절한 와이즈 토토 함수가 생성되면 와이즈 토토는로 설정되었습니다.와이즈 토토 만들기. 같은 와이즈 토토 기능은 여러 와이즈 토토에 사용할 수 있습니다.

와이즈 토토 함수 테이블 행을 반환합니다 (유형 값heappuple) 전화 집행자에게. 작업이 다음과 같은 작업을 수행하기 전에 발사 된 방아쇠 선택 :

  • 반환 할 수 있습니다null포인터 현재 행의 작업을 건너 뛰기 (그리고 행이 삽입/업데이트/삭제되지 않음).

  • for삽입and업데이트와이즈 토토 만 반환 된 행입니다 삽입 될 행이되거나 교체 할 행이됩니다. 행이 업데이트 중입니다. 이를 통해 와이즈 토토 기능이 가능합니다 삽입 또는 업데이트중인 행을 수정합니다.

A 중 하나를 유발하지 않는 와이즈 토토 이전 이러한 행동은 결과적으로 반환하기 위해주의해야합니다. 통과 된 것과 같은 행 (즉, 새 행삽입and업데이트Triggers, Old Row for삭제와이즈 토토).

반환 값은 다음에 해고 된 와이즈 토토에 대해 무시됩니다. 운영, 그래서 그들은 돌아올 수도 있습니다NULL.

동일한 이벤트에 대해 둘 이상의 와이즈 토토가 정의 된 경우 같은 관계에서, 와이즈 토토는 알파벳순으로 발사됩니다. 와이즈 토토 이름으로 주문하십시오. 와이즈 토토 이전의 경우 각 와이즈 토토에 의해 반환 된 수정 행은 다음 와이즈 토토에 입력. 전이 전 와이즈 토토가 a를 반환하는 경우NULL포인터, 작업은입니다 버려진 버려지고 후속 방아쇠가 해고되지 않았습니다.

와이즈 토토 함수가 SQL 명령을 실행하면 이들은 이들입니다 명령은 다시 와이즈 토토를 발사 할 수 있습니다. 이것은 계단식이라고합니다 와이즈 토토. 수에 직접 제한이 없습니다 캐스케이드 레벨. 캐스케이드가 a를 유발할 수 있습니다 동일한 와이즈 토토의 재귀 호출; 예를 들어, an삽입와이즈 토토가 명령을 실행할 수 있습니다 추가 행을 동일한 테이블에 삽입하여를 유발합니다.삽입다시 해고 될 와이즈 토토. 그것 무한을 피하려는 와이즈 토토 프로그래머의 책임입니다 그러한 시나리오에서의 재귀.

와이즈 토토가 정의되면 인수를 지정할 수 있습니다. 그것을 위해.목적 와이즈 토토 정의에 인수를 포함하는 것은 허용하는 것입니다 동일하게 호출하기 위해 비슷한 요구 사항을 가진 다른 와이즈 토토 기능. 예를 들어, 일반화 된 방아쇠가있을 수 있습니다 인수로서 두 개의 열 이름을 가져 오는 기능 하나의 현재 사용자와 현재 시간 스탬프 다른. 올바르게 작성하면이 와이즈 토토 기능이 있습니다 특정 테이블과 무관하게 와이즈 토토됩니다. 그래서 동일한 기능을 사용할 수 있습니다삽입적절한 열이있는 테이블의 이벤트, 자동으로 예를 들어 트랜잭션 테이블에서 레코드 생성을 추적합니다. 또한 정의 된 경우 마지막 업데이트 이벤트를 추적하는 데 사용될 수 있습니다.업데이트와이즈 토토