이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 사설 토토 베이 생성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

생성 방아쇠

이름

토토 베이 생성-새 토토 베이 정의

시놉시스

토토 베이 만들기이름이전 | 후에이벤트[또는 ...]
    에테이블[[각] row | 성명  ]
    [ 언제 (조건)]]
    절차 실행function_name(인수)

설명

토토 베이 만들기새 토토 베이를 만듭니다. 토토 베이는 지정된 테이블과 관련이 있으며 지정된 함수 실행function_name특정 이벤트시 발생하다.

토토 베이는 다음에 해고하도록 지정할 수 있습니다. 작업이 행으로 시도됩니다 (제약 조건을 확인하기 전에 그리고삽입, 업데이트또는삭제is 시도) 또는 작업이 완료된 후 (후 제약 조건이 확인되고삽입, 업데이트또는삭제완료되었습니다). 토토 베이가 전에 발사되면 이벤트, 토토 베이는 현재의 작업을 건너 뛸 수 있습니다. 행 또는 삽입되는 행을 변경 (for삽입and업데이트운영 만). 이벤트 후 방아쇠가 발사되면 모두 다른 방아쇠의 영향을 포함한 변화는입니다."Visible"토토 베이에게.

표시된 토토 베이각 행작업이 수정하는 모든 행에 대해 한 번 호출됩니다. 을 위한 예, A삭제10 행에 영향을 미칩니다 모든 원인ON DELETE토토 베이에서 각각에 대해 한 번, 10 개 별도 시간이라고 불리는 목표 관계 삭제 된 행. 대조적으로, 표시되는 방아쇠각 진술한 번만 실행합니다 주어진 작업이 수정 한 행에 관계없이 특히, 0 행을 수정하는 작업은 여전히 ​​가능합니다 해당 해당의 실행을 초래각 진술토토 베이).

또한 토토 베이는 A에 대한 발사로 정의 될 수 있습니다Truncate각각 성명.

또한 토토 베이 정의는 부울을 지정할 수 있습니다언제조건 방아쇠를 발사 해야하는지 여부. 로드 레벨에서 토토 베이언제조건은 오래된 것을 검사 할 수 있습니다 및/또는 행 열의 새로운 값. 진술 수준 토토 베이 또한 가질 수 있습니다언제조건 조건이 할 수 없으므로 기능이 그다지 유용하지 않습니다. 표의 값을 참조하십시오.

동일한 종류의 여러 토토 베이가 동일하게 정의 된 경우 이벤트, 그들은 알파벳 순서로 이름으로 해고됩니다.

select행을 수정하지 않습니다 당신은 만들 수 없습니다select토토 베이. 규칙 그러한 경우에는 견해가 더 적합합니다.

참조PostgreSQL : 문서 : 9.0 : 토토 결과더 많은 것 토토 베이에 대한 정보.

매개 변수

이름

새 토토 베이를 제공하는 이름. 이것은 뚜렷해야합니다 같은 테이블에 대한 다른 토토 베이의 이름에서.


이후

함수가 이전 또는 이전에 호출되는지 여부를 결정합니다 이벤트 후.

이벤트

삽입, 업데이트, 삭제또는Truncate; 이것은 이벤트를 지정합니다 그것은 방아쇠를 발사 할 것입니다. 여러 이벤트가 될 수 있습니다 사용 지정또는.

for업데이트토토 베이, 그것은입니다 이것을 사용하여 열 목록을 지정할 수 있습니다 통사론:

업데이트column_name1[,column_name2...]

토토 베이는 적어도 나열된 경우에만 발사됩니다. 열은 업데이트의 대상으로 언급됩니다.

테이블

표의 이름 (선택적으로 스키마 자격) 토토 베이는.

각 행
각 진술

이것은 토토 베이 절차가 여부를 지정합니다 토토 베이 이벤트의 영향을받는 모든 행에 대해 한 번 해고되거나 SQL 명령문 당 한 번만 한 번. 둘 다 지정되지 않으면각 진술는입니다 기본.

조건

토토 베이 여부를 결정하는 부울 표현 기능이 실제로 실행됩니다. 만약에언제지정되어 있으면 함수가 있습니다 전화하면조건반환true. 안에각 행토토 베이,언제조건은 열의 열을 참조 할 수 있습니다 기존 및/또는 새로운 행 값을 작성하여old.column_name또는NEW.column_name각각. 의 강의,삽입토토 베이는 할 수 없습니다 참조oldand삭제토토 베이는 참조 할 수 없습니다NEW.

현재,언제표현 하위 쿼리를 포함 할 수 없습니다.

function_name

NO로 선언 된 사용자가 제공하는 기능 인수 및 반환 유형토토 베이, 토토 베이시 실행됩니다 화재.

인수

선택적 쉼표로 구분 된 인수 목록 토토 베이가 실행될 때 기능에 제공됩니다. 그만큼 인수는 문자열 상수입니다. 간단한 이름과 숫자 상수도 여기에 쓸 수 있지만 모두 문자열로 변환됩니다. 설명을 확인하십시오 토토 베이 함수의 구현 언어 이러한 주장에 어떻게 액세스 할 수 있는지 알아보십시오. 기능; 정상 기능과 다를 수 있습니다 논쟁.

노트

테이블에 토토 베이를 만들려면 사용자에게가 있어야합니다.토토 베이테이블의 특권. 사용자 꼭 가져야execute토토 베이 기능.

use토토 커뮤니티 : 문서 : 9.0 : 드롭 트리거제거합니다 방아쇠.

열 특정 토토 베이 (업데이트column_name)는 언제 발사됩니다 모든 열은의 대상으로 나열됩니다.업데이트Command 'sSET목록. 열의 값이 행의 내용에 대한 변경이 이루어 지므로 토토 베이가 발사되지 않습니다. 에 의해업데이트 전토토 베이는 아닙니다 존경받는. 반대로,와 같은 명령업데이트 ... SET X = X ...토토 베이를 발사합니다 열x19184_19236

in토토 베이,언제조건은 바로 직전에 평가됩니다 기능이 실행되거나 실행되므로 사용언제19444_19581NEW조건은 이전에 의해 수정 될 수있는 현재 값입니다. 토토 베이. 또한, ATrigger 's언제조건은 검사 할 수 없습니다 의 시스템 열NEW행 (Sub 처럼OID) 아직 설정.

in이후토토 베이,언제조건은 행 바로 뒤에 평가됩니다 업데이트가 발생하고 이벤트가 대기되는지 여부를 결정합니다. 진술이 끝날 때 방아쇠를 발사하십시오. 그래서이후Trigger 's언제조건은 사실을 반환하지 않으며 대기열을 큐를 타지 않아도됩니다. 이벤트 또는 성명서에서 행을 다시 가져 오기 위해. 이것은 할 수 있습니다 많은 것을 수정하는 진술에서 상당한 속도를냅니다 행, 토토 베이가 몇 개에 대해서만 발사되면 줄.

inPostgreSQL이전 버전 7.3, 토토 베이 기능을 반환하는 것으로 선언해야했습니다. 자리 표시 자형opaque가 아니라토토 베이. 오래된 덤프의 로딩을 지원합니다 파일,토토 베이 만들기수락 할 것입니다 반환으로 선언 된 기능opaque, 그러나 통지를 발행하고 함수의 선언 된 반품을 변경합니다. type토토 베이.

함수 실행check_account_update행이있을 때마다 테이블계정가 될 것입니다 업데이트 :

토토 베이 check_update를 만듭니다
    계정에 대한 업데이트 전에
    각 행에 대해
    절차 실행 check_account_update ();

동일하지만 열면 함수 만 실행밸런스업데이트명령 :

토토 베이 check_update 만들기
    계정의 잔액 업데이트 전에
    각 행에 대해
    절차 실행 check_account_update ();

이 양식은 열이면 함수 만 실행합니다밸런스실제로 값이 변경되었습니다 :

토토 베이 check_update 만들기
    계정에 대한 업데이트 전에
    각 행에 대해
    언제 (Old.Balance는 New.balance와 구별됩니다)
    절차 실행 check_account_update ();

로그 업데이트를 위해 함수 호출계정, 그러나 무언가가 변경된 경우에만 :

Trigger log_update 만들기
    계정 업데이트 후
    각 행에 대해
    언제 (옛날.*는 새로 구별됩니다.*)
    프로 시저 실행 log_account_update ();

무지개 토토 : 문서 : 9.0 : 완전한 트리거 예a C에서 작성된 토토 베이 함수의 완전한 예제

호환성

the토토 베이 만들기성명서PostgreSQL하위 집합을 구현합니다 의SQL표준. 그만큼 다음 기능은 현재 누락되었습니다.

  • SQL은에 대한 별칭을 정의 할 수 있습니다."Old"and"New"토토 베이 된 정의에 사용할 행 또는 테이블 행동 (예 :토토 베이 생성 ... on TableName Old Row를 서머 이름 새 행으로 참조합니다 기타 이름 ...). 부터PostgreSQL토토 베이 절차를 허용합니다 사용자 정의 언어의 여러로 작성되어 액세스 데이터는 언어 별 방식으로 처리됩니다.

  • PostgreSQL토토 베이 된 사용자 정의 함수의 실행 행동. 표준을 통해 여러 가지를 실행할 수 있습니다 와 같은 다른 SQL 명령생성 테이블, 토토 베이 된 동작으로. 이 제한은 아닙니다 사용자 정의 기능을 만들어서 작업하기가 어렵습니다. 원하는 명령을 실행합니다.

SQL은 여러 토토 베이를 발사해야한다고 지정합니다 창출 시간 순서.PostgreSQL판단 된 이름 순서를 사용합니다 더 편리하게.

SQL을 지정합니다삭제 전캐스케이드 삭제 발사의 토토 베이이후계단식삭제완료. 그만큼PostgreSQL행동은삭제 전삭제 전에 항상 발사합니다 행동, 심지어 계단식. 이것은 더 일관된 것으로 간주됩니다. 예측할 수없는 행동도 있습니다.토토 베이 행을 수정하거나 업데이트를 방지합니다 참조 조치로 인한 업데이트 중. 이것은 할 수 있습니다 구속 조건 위반 또는 존중하지 않는 저장된 데이터로 이어집니다. 참조 제약.

단일 토토 베이에 대한 여러 조치를 지정하는 기능 사용또는isPostgreSQLSQL 확장 기준.

방화 능력TruncateispostgresqlSQL 확장 기준.