젠 토토 만들기 - 새 젠 토토 정의
만들기 [또는 교체] [구속 조건] 젠 토토이름
이전 | 후 | 대신이벤트
[또는 ...] 에table_name
[From참조 _table_name
] [연기되지 않음 | [연기 가능] [처음에는 즉시 | 처음에 연기]]] [참조 old | 새로운 테이블 [as]antransition_relation_name
[...]] [[각] 행 | 성명 ] [ 언제 (조건
)] function | 절차function_name
(인수
)여기서이벤트
중 하나 일 수 있습니다 :삽입 업데이트 [column_name
[, ...]] 삭제 잘린
젠 토토 만들기
새 방아쇠를 만듭니다.젠 토토 생성 또는 교체
새 젠 토토를 생성하거나 기존 젠 토토를 교체합니다. 젠 토토는 지정된 테이블, 뷰 또는 이물질 테이블과 연관되며 지정된 기능을 실행합니다function_name
해당 테이블에서 특정 작업이 수행되는 경우.
기존 젠 토토의 현재 정의를 대체하려면 사용젠 토토 생성 또는 교체
, 기존 트리거의 이름과 부모 테이블을 지정합니다. 다른 모든 속성이 대체됩니다.
젠 토토는 작업을 행으로 시도하기 전에 발사하도록 지정할 수 있습니다 (제약 조건을 확인하고삽입
, 업데이트
또는삭제
시도 됨); 또는 작업이 완료된 후 (제약 조건을 확인한 후삽입
, 업데이트
또는삭제
완료되었습니다); 또는 조작 대신 (삽입, 업데이트 또는 삭제의 경우). 젠 토토가 이벤트 전 또는 대신 발사되는 경우 젠 토토는 현재 행의 작업을 건너 뛰거나 삽입되는 행을 변경할 수 있습니다 (for삽입
and업데이트
운영 만). 이벤트 후 방아쇠가 발생하면 다른 트리거의 영향을 포함한 모든 변경 사항이입니다.“가시적”젠 토토에게.
표시된 젠 토토각 행
작업이 수정하는 모든 행마다 한 번 호출됩니다. 예를 들어, A삭제
10 행에 영향을 미치는 행은 모든 원인이됩니다ON DELETE
각 삭제 된 행에 대해 한 번, 10 개 별도 시간으로 호출되는 대상 관계에서 젠 토토합니다. 대조적으로, 표시되는 방아쇠각 진술
주어진 작업에 대해 한 번만 실행됩니다. 수정하는 행 수에 관계없이 수정하는 행 (특히 0 행을 수정하는 작업은 여전히 해당 가능한 모든 실행을 초래합니다각 진술
젠 토토).
화재로 지정된 젠 토토대신
젠 토토 이벤트가 표시되어야합니다각 행
, 뷰에서만 정의 할 수 있습니다.전
and이후
보기의 젠 토토는로 표시되어야합니다.각 진술
.
또한 젠 토토가 화재로 정의 될 수 있습니다Truncate
각 진술
.
다음 표는 테이블, 뷰 및 외국 테이블에 사용할 수있는 젠 토토 유형을 요약합니다.
언제 | 이벤트 | 로우 레벨 | 성명서 수준 |
---|---|---|---|
전 |
삽입 /업데이트 /삭제 |
테이블 및 외국 테이블 | 테이블,보기 및 외국 테이블 |
Truncate |
- | 테이블 및 외국 테이블 | |
이후 |
삽입 /업데이트 /삭제 |
테이블 및 외국 테이블 | 테이블,보기 및 외국 테이블 |
Truncate |
- | 테이블 및 외국 테이블 | |
대신 |
삽입 /업데이트 /삭제 |
보기 | - |
Truncate |
- | - |
또한 젠 토토 정의는 부울을 지정할 수 있습니다언제
조건. 젠 토토를 발사 해야하는지 확인하기 위해 테스트됩니다. 로드 레벨에서 젠 토토언제
조건은 행의 기존 및/또는 새 값을 검사 할 수 있습니다. 진술 수준 젠 토토도 가질 수 있습니다언제
조건, 조건은 테이블의 값을 참조 할 수 없기 때문에 기능이 그다지 유용하지는 않지만.
같은 종류의 여러 젠 토토가 같은 이벤트에 대해 정의되면 이름으로 알파벳 순서로 해고됩니다.
언제제약
옵션이 지정되어 있으며이 명령은 a를 만듭니다.제약 젠 토토.이것은 젠 토토 발사의 타이밍을 사용하여 조정할 수 있다는 점을 제외하고는 일반 젠 토토와 동일합니다.제약 세트
. 제약 조건 젠 토토 여야합니다After Row
일반 테이블 (이물 테이블이 아님)에 젠 토토됩니다. 이들은 진술이 끝날 때 젠 토토링 이벤트를 일으키거나 포함 된 거래가 끝날 때 해고 될 수 있습니다. 후자의 경우 그들은라고합니다.연기. 보류중인 연기 젠 토토 발사는 즉시 사용하여 즉시 발생할 수 있습니다제약 세트
. 구속 조건 젠 토토는 그들이 구현 한 제약 조건이 위반 될 때 예외를 제기 할 것으로 예상됩니다.
the참조
옵션을 활성화전환 관계, 현재 SQL 문에 의해 삽입, 삭제 또는 수정 된 모든 행을 포함하는 행 세트입니다. 이 기능을 통해 젠 토토는 한 번에 한 행뿐만 아니라 진술이 한 일에 대한 글로벌 관점을 볼 수 있습니다. 이 옵션은에만 허용됩니다.이후
제약 젠 토토가 아닌 젠 토토; 또한 방아쇠가 인 경우업데이트
젠 토토, 지정해서는 안됩니다column_name
List.오래된 테이블
한 번만 지정 될 수 있으며 해고 할 수있는 젠 토토에 대해서만업데이트
또는삭제
; 그것은를 포함하는 전환 관계를 만듭니다.사전 이미지진술서에 의해 업데이트되거나 삭제 된 모든 행 중. 비슷하게,New Table
한 번만 지정 될 수 있으며 해고 할 수있는 젠 토토에 대해서만업데이트
또는19799_19807
; 그것은를 포함하는 전환 관계를 만듭니다.after-Images성명서에 의해 업데이트되거나 삽입 된 모든 행 중.
select
행을 수정하지 않으므로 생성 할 수 없습니다select
젠 토토. 규칙과 견해는 필요한 것으로 보이는 문제에 대한 실행 가능한 솔루션을 제공 할 수 있습니다select
젠 토토.
참조젠 토토 : 문서 : 18 : 37 장. 트리거젠 토토에 대한 자세한 정보.
이름
새 젠 토토를 제공하는 이름. 이것은 같은 테이블에 대한 다른 트리거의 이름과 구별되어야합니다. 이름을 스키마 자격을 갖추지 못할 수 없습니다. 젠 토토는 테이블의 스키마를 상속합니다. 제약 트리거의 경우, 이것은 또한 트리거의 동작을 사용하여를 수정할 때 사용하는 이름이기도합니다.제약 세트
.
전
이후
대신
이벤트 전, 후 또는 대신 함수가 호출되는지 여부를 결정합니다. 제약 조건 젠 토토는로만 지정할 수 있습니다.이후
.
이벤트
삽입
, 업데이트
, 삭제
또는Truncate
; 이것은 방아쇠를 발사 할 이벤트를 지정합니다. 여러 이벤트가를 사용하여 지정할 수 있습니다.또는
, 전환 관계가 요청되는 경우를 제외하고.
for업데이트
이벤트,이 구문을 사용하여 열 목록을 지정할 수 있습니다 :
업데이트column_name1
[,column_name2
...]
젠 토토는 나열된 열 중 하나 이상이의 대상으로 언급 된 경우에만 발사됩니다.업데이트
명령 또는 나열된 열 중 하나가의 대상 인 열에 따라 생성 된 열인 경우업데이트
.
Update 대신
이벤트는 열 목록을 허용하지 않습니다. 전환 관계를 요청할 때 열 목록을 지정할 수 없습니다.
table_name
테이블,보기 또는 외국 테이블의 이름 (선택적으로 스키마 자격)이 젠 토토가 적용됩니다.
참조 _table_name
제약 조건에 의해 참조 된 다른 테이블의 (아마도 스키마 자격) 이름. 이 옵션은 외국 키 제약 조건에 사용되며 일반적인 사용에는 권장되지 않습니다. 이것은 제약 조건 젠 토토에 대해서만 지정할 수 있습니다.
연기 가능
연기가 없음
처음에 즉시
처음에 연기
트리거의 기본 타이밍. 참조테이블 생성이러한 제약 조건 옵션에 대한 자세한 내용을위한 문서. 이것은 제약 조건 젠 토토에 대해서만 지정할 수 있습니다.
참조
이 키워드는 젠 토토 진술의 전환 관계에 대한 액세스를 제공하는 하나 또는 두 개의 관계 이름의 선언에 직전에 있습니다.
오래된 테이블
New Table
이 조항은 다음 관계 이름이 이미지 전이 전이 관계 또는 이미지 후 전환 관계에 대한 것인지 여부를 나타냅니다.
Transition_Relation_name
이 전이 관계의 젠 토토 내에서 사용되는 (자격이없는) 이름.
각 행
각 진술에 대해
이것은 젠 토토 이벤트의 영향을받는 모든 행에 대해 젠 토토 함수를 한 번 또는 SQL 명령문 당 한 번만 해고 해야하는지 여부를 지정합니다. 둘 다 지정되지 않으면각 진술
기본값입니다. 구속 조건 젠 토토 만 지정할 수 있습니다각 행
.
조건
젠 토토 함수가 실제로 실행되는지 여부를 결정하는 부울 표현. 만약에언제
지정되어 있으며, 함수는에만 호출됩니다.조건
반환true
. 안에각 행
젠 토토,언제
조건은 작성하여 이전 및/또는 새 행 값의 열을 참조 할 수 있습니다old.
또는column_name
NEW.
각각. 물론,column_name
삽입
젠 토토는 참조 할 수 없습니다old
and삭제
젠 토토는 참조 할 수 없습니다NEW
.
대신
젠 토토는 지원하지 않습니다언제
조건
현재,언제
표현식은 하위 쿼리를 포함 할 수 없습니다.
제약 조건 트리거의 경우의 평가는언제
조건은 연기되지 않았지만 행 업데이트 작업이 수행 된 직후에 발생합니다. 조건이 True로 평가하지 않으면 방아쇠가 지연된 실행을 위해 대기열되지 않습니다.
function_name
인수가없고 반환 유형으로 선언 된 사용자가 제공 한 함수젠 토토
, 젠 토토가 발생할 때 실행됩니다.
의 구문에서젠 토토 만들기
, 키워드기능
및절차
동등하지만, 참조 된 함수는 절차가 아닌 함수 여야합니다. 키워드 사용절차
여기 역사적이고 더 이상 사용되지 않습니다.
인수
젠 토토가 실행될 때 함수에 제공 될 선택적 쉼표로 구분 된 인수 목록. 인수는 문자열 상수입니다. 간단한 이름과 숫자 상수도 여기에도 쓸 수 있지만 모두 문자열로 변환됩니다. 젠 토토 함수의 구현 언어에 대한 설명을 확인하여 이러한 인수에 어떻게 액세스 할 수 있는지 확인하십시오. 정상적인 기능 인수와 다를 수 있습니다.
테이블의 젠 토토를 작성하거나 교체하려면 사용자에게가 있어야합니다.젠 토토
테이블의 특권. 사용자도execute
젠 토토 함수의 권한.
use드롭 젠 토토
방아쇠를 제거하려면
파티션 된 테이블에서 로우 레벨 젠 토토를 만드는 것은 동일하게 발생합니다“클론”기존 파티션 각각에서 생성 될 젠 토토; 나중에 생성되거나 첨부 된 파티션에는 동일한 젠 토토도 있습니다. 어린이 파티션에 이미 상충되는 이름 젠 토토가있는 경우 이미 오류가 발생하지 않으면 오류가 발생합니다.젠 토토 생성 또는 교체
사용됩니다.이 경우 젠 토토가 클론 젠 토토로 대체됩니다. 부모와 파티션이 분리되면 클론 젠 토토가 제거됩니다.
열 별 젠 토토 (하나는업데이트
구문) 열이에 대상으로 표시되면column_name
업데이트
Command 'sSET
목록. 젠 토토가 발사되지 않은 경우에도 열의 값이 변경 될 수 있습니다.업데이트 전
젠 토토는 고려되지 않습니다. 반대로,와 같은 명령업데이트 ... SET X = X ...
열에서 방아쇠를 해고합니다X
, 열의 값이 변하지 않더라도.
in전
젠 토토,언제
조건은 함수가 실행되거나 실행되기 직전에 평가됩니다.언제
젠 토토 함수의 시작 부분에서 동일한 조건을 테스트하는 것과 실질적으로 다르지 않습니다. 특히NEW
조건에서 볼 행은 이전 젠 토토에 의해 수정 될 수있는 현재 값입니다. 또한, A전
Trigger 's언제
조건은의 시스템 열을 검사 할 수 없습니다.NEW
행 (예 :CTID
), 아직 설정되지 않았기 때문에.
in이후
젠 토토,언제
조건은 행 업데이트가 발생한 직후에 평가되며 명세서 끝에서 젠 토토를 발사하기 위해 이벤트가 대기되는지 여부를 결정합니다. 그래서이후
Trigger 's언제
조건은 True를 반환하지 않으며, 이벤트를 대기하거나 문의 끝에서 행을 다시 가져올 필요는 없습니다. 이로 인해 젠 토토가 몇 줄에 대해서만 발사되면 많은 행을 수정하는 진술에서 상당한 속도를 높일 수 있습니다.
경우에 따라 단일 SQL 명령이 여러 종류 이상의 젠 토토를 발사 할 수 있습니다. 예를 들어삽입
with충돌시 업데이트
절은 삽입 및 업데이트 작업을 모두 유발할 수 있으므로 필요에 따라 두 종류의 젠 토토를 모두 발사 할 수 있습니다. 젠 토토에 제공되는 전환 관계는 이벤트 유형에 따라 다릅니다. 따라서삽입
젠 토토는 삽입 된 행만 볼 수 있지만업데이트
젠 토토는 업데이트 된 행만 볼 수 있습니다.
외국 키 집행 조치로 인한 행 업데이트 또는 삭제업데이트 캐스케이드
또는ON 삭제 세트 널
, SQL 명령의 일부로 취급되어이를 유발하지 않습니다 (그러한 조치는 결코 연기되지 않음). 영향을받는 테이블의 관련 젠 토토가 발사되므로 SQL 명령이 유형과 직접 일치하지 않는 젠 토토를 발사 할 수있는 다른 방법을 제공합니다. 간단한 경우, 전환 관계를 요청하는 젠 토토는 단일 원래 SQL 명령으로 단일 전환 관계로 테이블에 발생하는 모든 변경 사항을 볼 수 있습니다. 그러나 AN의 존재가있는 경우가 있습니다.After Row
전환 관계를 요청하는 젠 토토는 단일 SQL 명령에 의해 젠 토토 된 외국 키 집행 조치가 각각 자체 전환 관계 (들)와 함께 여러 단계로 분할됩니다. 이러한 경우, 존재하는 진술 수준 젠 토토는 전환 관계 세트를 생성 한마다 한 번 해고되어 젠 토토가 전환 관계에서 한 번만 한 번만 영향을받는 각 행을 보도록합니다..
보기의 명령문 수준 젠 토토는 뷰의 조치가 행 수준으로 처리되는 경우에만 해고됩니다대신
젠 토토. 조치가 AN에 의해 처리 된 경우대신
규칙, 규칙에 따라 규칙에 의해 배출되는 모든 진술이 뷰 이름을 지정하는 원래 진술 대신 실행되므로 해고 될 젠 토토는 대체 문서에 명명 된 테이블에 있습니다. 마찬가지로,보기가 자동으로 업데이트되면, 조치를 뷰의 기본 테이블의 조치로 자동으로 재 작성하여 기본 테이블의 명령문 수준 젠 토토가 해고 된 것입니다..
상속 성 어린이가있는 파티션 된 테이블 또는 테이블 수정 명시 적으로 명명 된 테이블에 첨부 된 명령문 수준 젠 토토를 해고하지만 해당 파티션 또는 하위 테이블에 대한 명령문 수준 젠 토토는 아닙니다. 대조적으로, 쿼리에 명시 적으로 명명되지 않더라도 영향을받는 파티션 또는 하위 테이블에서 행 수준 젠 토토가 적용됩니다. 명령문 수준 젠 토토가 A에 의해 이름이 지정된 전환 관계로 정의 된 경우참조
조항은 모든 영향을받는 파티션 또는 하위 테이블에서 행 이미지 전후에 표시됩니다. 상속 어린이의 경우 행 이미지에는 젠 토토가 첨부 된 표에있는 열만 포함됩니다.
현재, 전환 관계가있는 로우 레벨 젠 토토는 파티션 또는 상속 자식 테이블에서 정의 할 수 없습니다. 또한 분할 된 테이블의 젠 토토는대신
.
현재,또는 교체
옵션은 제약 젠 토토를 위해 지원되지 않습니다.
젠 토토 테이블에서 이미 업데이트 작업을 수행 한 트랜잭션 내에서 기존 젠 토토를 교체하는 것은 권장되지 않습니다. 이미 이루어진 발사 결정, 또는 해고 결정의 일부는 재고되지 않으므로 그 효과는 놀랍습니다.
자신의 젠 토토 코드를 작성하지 않고도 일반적인 문제를 해결하는 데 사용할 수있는 몇 가지 내장 젠 토토 기능이 있습니다. 보다PostgreSQL : 문서 : 18 : 9.29. 토토 베이 기능.
함수 실행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 ();
함수 실행View_Insert_row
보기의 기본 테이블에 행을 삽입하려면 각 행에 대해 :
Trigger View_Insert 작성 my_view에 삽입하는 대신 각 행에 대해 기능 view_insert_row (); 실행
함수 실행check_transfer_balances_to_zero
각 진술에 대해전송
행이 0의 순으로 오프셋됩니다 :
Trigger Transfer_Insert 작성 전송시 삽입 후 삽입 된대로 새 테이블을 참조합니다 각 진술에 대해 함수 실행 check_transfer_balances_to_zero ();
함수 실행check_matching_pairs
각 행에 대해 동시에 일치하는 쌍이 동시에 일치하는지 확인하기 위해 각 행에 대해 :
Trigger Paired_items_update 만들기 paired_items에 대한 업데이트 후 새 테이블을 NewTab Old Table으로 참조하여 OldTab 각 행에 대해 함수 실행 check_matching_pairs ();
PostgreSQL : 문서 : 18 : 37.4. 완전한 스포츠 토토 사이트 예C로 작성된 젠 토토 함수의 전체 예제를 포함합니다.
the젠 토토 만들기
성명서PostgreSQL의 하위 집합을 구현합니다SQL표준. 다음 기능은 현재 누락되었습니다.
전환 테이블 이름에 대한이후
젠 토토는를 사용하여 지정됩니다참조
표준 방식의 조항, 사용 된 행 변수각 행
젠 토토는 a에 지정되지 않을 수 있습니다.참조
절. 젠 토토 함수가 쓰여지는 언어에 의존하는 방식으로 사용할 수 있지만 한 언어에 대해 고정됩니다. 일부 언어는 마치가있는 것처럼 효과적으로 행동합니다.참조
조항 포함오래된 행 새 행은 새로운 행으로
.
표준을 통해 전환 테이블을 열 특이 적으로 사용할 수 있습니다업데이트
젠 토토이지만 전환 테이블에서 볼 수있는 행 세트는 트리거의 열 목록에 따라 다릅니다. 이것은 현재에 의해 구현되지 않습니다PostgreSQL.
PostgreSQL젠 토토 된 조치에 대한 사용자 정의 함수의 실행 만 허용합니다. 이 표준은와 같은 여러 다른 SQL 명령을 실행할 수 있습니다.테이블 만들기
, 젠 토토 된 동작으로. 이 제한은 원하는 명령을 실행하는 사용자 정의 함수를 만들어 작업하기가 어렵지 않습니다.
SQL 생성 시간으로 여러 젠 토토를 해고해야한다고 지정합니다.PostgreSQL더 편리한 것으로 판단 된 이름 순서를 사용합니다.
SQL을 지정합니다삭제 전
캐스케이드 삭제 발사의 젠 토토이후계단식삭제
완료. 그만큼PostgreSQL행동은삭제 전
삭제 조치 전에 항상 발사되기 전에 계단식. 이것은 더 일관된 것으로 간주됩니다. 비표준 행동이 있습니다.전
젠 토토 참조 조치로 인한 업데이트 중에 행을 수정하거나 업데이트를 방지합니다. 이로 인해 제약 조건 위반 또는 참조 제약을 존중하지 않는 저장된 데이터가 발생할 수 있습니다.
단일 젠 토토를 사용하여 여러 동작을 지정하는 기능또는
isPostgreSQLSQL 표준 확장.
발사 능력Truncate
isPostgreSQL보기에서 명령문 수준 젠 토토를 정의하는 능력과 마찬가지로 SQL 표준의 확장.
제약 조건 젠 토토 생성
isPostgreSQL확장SQL표준. 도또는 교체
옵션.