토토 결과는 데이터베이스가 해야하는 사양입니다 특정 기능이 특정 기능을 자동으로 실행합니다 작동 유형이 수행됩니다. 토토 결과를 정의 할 수 있습니다 전후에 실행삽입, 업데이트또는삭제운영, 한 번만 수정 된 행 또는 당시SQL진술. 토토 결과 이벤트가 발생하면 토토 결과 기능이 있습니다 이벤트를 처리하기에 적절한 시간에 호출.
토토 결과 함수는 토토 결과 자체 전에 정의되어야합니다. 만들 수 있습니다. 토토 결과 함수는 a로 선언해야합니다 인수가없고 유형을 반환하지 않는 기능토토 결과. (토토 결과 함수는 입력을 수신합니다 특별한 통과를 통해TriggerData구조, 형태가 아닙니다 일반 기능 인수.)
적절한 토토 결과 함수가 생성되면 토토 결과 로 설립되었습니다.토토 결과 만들기. 같은 토토 결과 기능은 여러 토토 결과에 사용할 수 있습니다.
postgresql제공per-row토토 결과 및진술 당토토 결과. 당직 방향 토토 결과와 함께 토토 결과 함수는 각 행에 대해 한 번 호출됩니다. 방아쇠를 해고 한 진술의 영향을받습니다. 대조적으로, a 적절한 경우 진술 당 토토 결과는 한 번만 호출됩니다 영향을받는 행 수에 관계없이 진술이 실행됩니다. 그 진술에 의해. 특히, 0에 영향을 미치는 진술 행은 여전히 해당 해당의 실행을 초래합니다. 진술 당 토토 결과. 이 두 가지 유형의 토토 결과는 때때로입니다 라고 불리는로우 레벨토토 결과 및명령문 수준각각 토토 결과.
토토 결과도로 분류됩니다.전토토 결과 및이후토토 결과. 토토 결과 전 성명서 수준 성명서가 무엇이든하기 시작하기 전에 자연스럽게 발사하는 동안 맨 끝에서 발사를 유발 한 후 명세서 수준 성명. a 직전에 발사를 유발하기 전에 줄 수준 특정 행은 토토 결과 후 행 수준으로 작동됩니다 성명서의 끝에서 발사 (그러나 어떤 진술 수준 앞에 토토 결과 후).
진술 당 토토 결과로 호출 된 토토 결과 함수 항상 반환NULL. 토토 결과 기능 당면 토토 결과로 호출하면 테이블 행 (값의 값 유형heappuple) 호출 그들이 선택한 경우 집행자. 행 앞에서 발사 된 행 수준 토토 결과 운영에는 다음과 같은 선택이 있습니다.
반환 할 수 있습니다NULL현재 행 작동. 이것은 집행자에게 지시합니다 토토 결과를 호출 한로드 레벨 작업을 수행하지 마십시오 (특정 테이블의 삽입 또는 수정 열).
로드 레벨 용삽입and업데이트토토 결과 전용, 반환 행은 삽입 될 행이되거나 교체 할 행이됩니다. 행이 업데이트 중입니다. 이를 통해 토토 결과 기능이 수정 될 수 있습니다 행이 삽입되거나 업데이트됩니다.
이러한 행동 중 하나는 결과적으로 돌아 오도록주의해야합니다. 통과 된 것과 같은 행 (즉,NEW행삽입및업데이트토토 결과,old행삭제토토 결과).
이후에 해고 된로드 레벨 토토 결과에 대해 반환 값이 무시됩니다. 작전, 그래서 그들은 반환 할 수 있습니다NULL.
동일한 이벤트에 대해 둘 이상의 토토 결과가 정의 된 경우 동일한 관계, 토토 결과는 알파벳 순서로 발사됩니다. 토토 결과 이름으로. 토토 결과 이전의 경우 각 토토 결과에 의해 반환 된 수정 행은 입력이됩니다 다음 방아쇠에. 토토 결과가 돌아 오기 전의 경우NULL, 해당 행에 작업이 버려집니다 후속 토토 결과는 해고되지 않습니다.
일반적으로 토토 결과가 선택되기 전의 행은 OR을 확인하는 데 사용됩니다 삽입 또는 업데이트 될 데이터 수정. 예를 들어, 전 토토 결과가 현재 시간을 a에 삽입하는 데 사용될 수 있습니다.타임 스탬프열 또는 두 개를 확인하십시오 행의 요소는 일관성이 있습니다. 토토 결과 후 행이 가장 많습니다 다른 테이블로 업데이트를 전파하거나 다른 테이블에 대한 일관성 검사. 이것의 이유 노동의 분열은 이후 방아쇠가 확실하다는 것입니다. 행의 최종 값을보고, 이전의 토토 결과는 할 수 없습니다. 토토 결과가 발사되기 전에 다른 것이있을 수 있습니다. 당신이 있다면 전 또는 후에 방아쇠를 만들어야 할 특정한 이유가 없습니다. 운영에 대한 정보가 있기 때문에 사례는 더 효율적입니다. 성명서가 끝날 때까지 저장할 필요가 없습니다.
토토 결과 함수가 SQL 명령을 실행하면 이들은 이들입니다 명령은 다시 토토 결과를 발사 할 수 있습니다. 이것은 계단식이라고합니다 토토 결과. 캐스케이드 수에 직접 제한이 없습니다. 레벨. 캐스케이드가 재귀를 유발할 수 있습니다 동일한 토토 결과의 호출; 예를 들어, an삽입토토 결과는 그 명령을 실행할 수 있습니다 추가 행을 동일한 테이블에 삽입하여를 유발합니다.삽입다시 해고 될 토토 결과. 그것은 무한을 피할 수있는 토토 결과 프로그래머의 책임 그러한 시나리오에서의 재귀.
토토 결과가 정의되면 인수를 지정할 수 있습니다. 그것을 위해.목적 토토 결과 정의에 인수를 포함하는 것은 허용하는 것입니다 동일하게 호출하기 위해 비슷한 요구 사항을 가진 다른 토토 결과 기능. 예를 들어, 일반화 된 방아쇠가있을 수 있습니다 인수로서 두 개의 열 이름을 가져 오는 기능 하나는 현재 사용자와 다른 시간의 현재 타임 스탬프. 제대로 작성되면이 토토 결과 기능은 독립적입니다 토토 결과 중입니다. 그래서 같은 함수 에 사용될 수 있습니다.삽입어떤 행사 적절한 열이있는 테이블, 자동으로 생성을 추적합니다 예를 들어 트랜잭션 테이블의 레코드. 또한 사용될 수 있습니다 최후의 이벤트를 추적하려면로 정의 된 경우업데이트토토 결과.
토토 결과를 지원하는 각 프로그래밍 언어에는 자체가 있습니다 토토 결과 입력 데이터를 토토 결과에 사용할 수 있도록하는 방법 기능. 이 입력 데이터에는 토토 결과 이벤트 유형이 포함됩니다 (예 :삽입또는업데이트) 및 나열된 인수 안에토토 결과 만들기. 줄 수준의 경우 토토 결과, 입력 데이터에도가 포함됩니다.new행삽입and업데이트토토 결과 및/또는old행업데이트및삭제토토 결과. 진술 수준 토토 결과는 현재 개인을 검사 할 방법이 없습니다. 문에 의해 수정 된 행 (s).