토토 커뮤니티 생성 — 새 토토 커뮤니티 정의
[제약] 토토 커뮤니티 생성이름이전 | 이후 | 대신이벤트[ 또는 ... ] 켜짐테이블_이름[ 보낸 사람referenced_table_name] [ 연기할 수 없음 | [ 연기 가능 ] [ 처음에는 즉시 | 처음에는 연기됨 ] ] [ 참조 이전 | 신규 테이블 [ 그대로 ]transition_relation_name[ ... ] ] [ [ 각각 ] 에 대해 ] 행 | 진술 ] [ 언제 (조건) ] 실행 기능 | 절차함수_이름(인수) 어디에서이벤트다음 중 하나일 수 있습니다.삽입 업데이트 [ OF열_이름[, ... ] ] 삭제 자르기
토토 커뮤니티 생성새 토토 커뮤니티를 생성합니다. 토토 커뮤니티는 지정된 테이블, 뷰 또는 외부 테이블과 연결되고 지정된 기능을 실행합니다.함수_이름해당 테이블에서 특정 작업이 수행될 때.
행에서 작업이 시도되기 전에 토토 커뮤니티가 실행되도록 지정할 수 있습니다(제약조건을 확인하기 전).삽입, 업데이트또는삭제시도됨); 또는 작업이 완료된 후(제약조건을 확인한 후삽입, 업데이트또는삭제완료); 또는 작업 대신(뷰에 대한 삽입, 업데이트 또는 삭제의 경우) 토토 커뮤니티가 이벤트 이전이나 이벤트 대신에 실행되는 경우 토토 커뮤니티는 현재 행에 대한 작업을 건너뛰거나 삽입되는 행을 변경할 수 있습니다(for삽입그리고업데이트작업 전용). 이벤트 이후에 토토 커뮤니티가 실행되면 다른 토토 커뮤니티의 효과를 포함한 모든 변경 사항이 적용됩니다.“표시”토토 커뮤니티에.
표시된 토토 커뮤니티각 행에 대해작업이 수정되는 모든 행에 대해 한 번씩 호출됩니다. 예를 들어,삭제10개 행에 영향을 미치면 어떤 일이 발생하든지삭제 중삭제된 각 행에 대해 한 번씩, 10번 개별적으로 호출되도록 대상 관계를 토토 커뮤니티합니다. 대조적으로, 다음과 같이 표시된 토토 커뮤니티는각 진술에 대해수정하는 행 수에 관계없이 특정 작업에 대해 한 번만 실행됩니다. 특히 0개 행을 수정하는 작업은 여전히 적용 가능한 작업을 실행하게 됩니다.각 문에 대해토토 커뮤니티).
발동하도록 지정된 토토 커뮤니티대신토토 커뮤니티 이벤트가 표시되어야 합니다각 행에 대해, 뷰에서만 정의할 수 있습니다.이전그리고이후뷰의 토토 커뮤니티는 다음으로 표시되어야 합니다.각 명령문에 대해.
또한 다음을 위해 실행되도록 토토 커뮤니티를 정의할 수 있습니다.잘라내기하지만 오직각 문에 대해.
다음 표에는 테이블, 뷰 및 외부 테이블에 사용할 수 있는 토토 커뮤니티 유형이 요약되어 있습니다.
| 언제 | 이벤트 | 행 수준 | 문 수준 |
|---|---|---|---|
이전 |
삽입/업데이트/삭제 |
테이블 및 외부 테이블 | 테이블, 뷰 및 외부 테이블 |
잘라내기 |
— | 테이블 | |
이후 |
삽입/업데이트/삭제 |
테이블 및 외부 테이블 | 테이블, 뷰 및 외부 테이블 |
잘라내기 |
— | 테이블 | |
대신 |
삽입/업데이트/삭제 |
조회수 | — |
잘라내기 |
— | — |
또한 토토 커뮤니티 정의는 부울을 지정할 수 있습니다.언제조건, 토토 커뮤니티가 실행되어야 하는지 확인하기 위해 테스트됩니다. 행 수준에서 토토 커뮤니티는언제조건은 행 열의 이전 및/또는 새 값을 검사할 수 있습니다. 명령문 수준 토토 커뮤니티는 다음을 가질 수도 있습니다.언제조건, 하지만 조건이 테이블의 어떤 값도 참조할 수 없기 때문에 이 기능은 그다지 유용하지 않습니다.
동일한 이벤트에 대해 동일한 종류의 여러 토토 커뮤니티가 정의된 경우 이름의 알파벳순으로 실행됩니다.
때제약옵션이 지정되면 이 명령은 다음을 생성합니다.제약 토토 커뮤니티. 이는 토토 커뮤니티 실행 타이밍을 다음을 사용하여 조정할 수 있다는 점을 제외하면 일반 토토 커뮤니티와 동일합니다.제약조건 설정. 제약조건 토토 커뮤니티는 다음과 같아야 합니다.행 이후일반 테이블(외부 테이블 아님)에서 토토 커뮤니티됩니다. 이벤트를 토토 커뮤니티하는 명령문의 끝이나 포함된 트랜잭션의 끝에서 실행될 수 있습니다. 후자의 경우에는 다음과 같이 말합니다.지연. 보류 중인 지연 토토 커뮤니티 실행은 다음을 사용하여 즉시 발생하도록 강제할 수도 있습니다.제약조건 설정. 제약조건 토토 커뮤니티는 자신이 구현하는 제약조건이 위반될 때 예외를 발생시킬 것으로 예상됩니다.
그참조 중옵션을 사용하면 다음 항목을 수집할 수 있습니다.전환 관계은 현재 SQL 문에 의해 삽입, 삭제, 수정된 모든 행을 포함하는 행 집합입니다. 이 기능을 사용하면 토토 커뮤니티는 한 번에 한 행씩이 아니라 문이 수행한 작업에 대한 전역 보기를 볼 수 있습니다. 이 옵션은 다음에만 허용됩니다.이후제약조건 토토 커뮤니티가 아닌 토토 커뮤니티입니다. 또한 토토 커뮤니티가 다음과 같은 경우에도 마찬가지입니다.업데이트토토 커뮤니티, 다음을 지정해서는 안 됩니다.열_이름목록.이전 테이블한 번만 지정할 수 있으며 다음에서 실행할 수 있는 토토 커뮤니티에 대해서만 지정할 수 있습니다.업데이트또는삭제; 그것은를 포함하는 전이 관계를 생성합니다사전 이미지문에 의해 업데이트되거나 삭제된 모든 행. 마찬가지로,새 테이블한 번만 지정할 수 있으며 다음에서 실행할 수 있는 토토 커뮤니티에 대해서만 지정할 수 있습니다.업데이트또는삽입; 그것은를 포함하는 전이 관계를 생성합니다애프터 이미지문에 의해 업데이트되거나 삽입된 모든 행 중
선택행을 수정하지 않으므로 생성할 수 없습니다.선택토토 커뮤니티. 규칙과 보기는 필요한 것으로 보이는 문제에 대한 실행 가능한 솔루션을 제공할 수 있습니다.선택토토 커뮤니티.
참조토토 꽁 머니 : 문서 : 11 : 39 장. 트리거토토 커뮤니티에 대한 자세한 내용을 확인하세요.
이름새 토토 커뮤니티에 부여할 이름입니다. 이는 동일한 테이블에 대한 다른 토토 커뮤니티의 이름과 구별되어야 합니다. 이름은 스키마로 한정될 수 없습니다. 토토 커뮤니티는 해당 테이블의 스키마를 상속합니다. 제약 조건 토토 커뮤니티의 경우 이는 다음을 사용하여 토토 커뮤니티의 동작을 수정할 때 사용하는 이름이기도 합니다.제약조건 설정.
이전이후대신함수가 이벤트 이전, 이후 또는 대신에 호출되는지 결정합니다. 제약 조건 토토 커뮤니티는 다음과 같이만 지정할 수 있습니다.이후.
이벤트다음 중 하나삽입, 업데이트, 삭제또는잘라내기; 이는 토토 커뮤니티를 실행할 이벤트를 지정합니다. 다음을 사용하여 여러 이벤트를 지정할 수 있습니다.또는, 전환 관계가 요청되는 경우는 제외.
용업데이트이벤트, 다음 구문을 사용하여 열 목록을 지정할 수 있습니다.
업데이트열_이름1[,열_이름2... ]
토토 커뮤니티는 나열된 열 중 하나 이상이 대상으로 언급된 경우에만 실행됩니다.업데이트명령.
업데이트 대신이벤트는 열 목록을 허용하지 않습니다. 전이 관계 요청 시에도 열 목록을 지정할 수 없습니다.
테이블_이름토토 커뮤니티의 대상이 되는 테이블, 뷰 또는 외부 테이블의 이름(선택적으로 스키마 한정).
referenced_table_name제약조건에 의해 참조되는 다른 테이블의 (스키마 한정) 이름일 수 있습니다. 이 옵션은 외래 키 제약 조건에 사용되며 일반적인 용도로는 권장되지 않습니다. 이는 제약 조건 토토 커뮤니티에만 지정할 수 있습니다.
지연 가능지연할 수 없음처음에는 즉시처음에는 연기됨토토 커뮤니티의 기본 타이밍. 참조테이블 생성23259_23368
참조 중이 키워드는 토토 커뮤니티링 문의 전환 관계에 대한 액세스를 제공하는 하나 또는 두 개의 관계 이름 선언 바로 앞에옵니다.
오래된 테이블새 테이블이 절은 다음 관계 이름이 사전 이미지 전환 관계인지 사후 이미지 전환 관계인지를 나타냅니다.
transition_relation_name이 전환 관계에 대한 토토 커뮤니티 내에서 사용되는 (한정되지 않은) 이름.
각 행에 대해각 문에 대해이는 토토 커뮤니티 이벤트에 의해 영향을 받은 모든 행에 대해 토토 커뮤니티 함수가 한 번 실행되어야 하는지 아니면 SQL 문당 한 번만 실행되어야 하는지를 지정합니다. 둘 다 지정되지 않은 경우,각 문에 대해기본값입니다. 제약 조건 토토 커뮤니티만 지정할 수 있습니다.각 행에 대해.
조건토토 커뮤니티 기능이 실제로 실행될지 여부를 결정하는 부울 표현식입니다. 만일언제이 지정되면 함수는 다음과 같은 경우에만 호출됩니다.조건반환참. 에서각 행에 대해토토 커뮤니티,언제조건은 다음을 작성하여 이전 및/또는 새 행 값의 열을 참조할 수 있습니다.오래된.또는열_이름새로운.각각. 물론이죠,열_이름삽입토토 커뮤니티는 참조할 수 없습니다.오래된그리고삭제토토 커뮤니티는 참조할 수 없습니다.신규.
대신토토 커뮤니티는 지원하지 않습니다.언제조건.
현재,언제식에는 하위 쿼리가 포함될 수 없습니다.
제약 조건 토토 커뮤니티의 경우 다음 평가에 유의하세요.언제조건은 지연되지 않지만 행 업데이트 작업이 수행된 직후에 발생합니다. 조건이 true로 평가되지 않으면 토토 커뮤니티는 지연된 실행을 위해 대기열에 추가되지 않습니다.
함수_이름인수를 사용하지 않고 유형을 반환하는 것으로 선언된 사용자 제공 함수토토 커뮤니티, 토토 커뮤니티가 실행될 때 실행됩니다.
구문에서토토 커뮤니티 생성, 키워드기능그리고절차은 동일하지만 참조된 함수는 어떤 경우에도 프로시저가 아닌 함수여야 합니다. 키워드의 사용절차여기는 역사적이며 더 이상 사용되지 않습니다.
인수토토 커뮤니티가 실행될 때 함수에 제공될 선택적 쉼표로 구분된 인수 목록입니다. 인수는 리터럴 문자열 상수입니다. 간단한 이름과 숫자 상수도 여기에 작성할 수 있지만 모두 문자열로 변환됩니다. 함수 내에서 이러한 인수에 액세스할 수 있는 방법을 알아보려면 토토 커뮤니티 함수의 구현 언어에 대한 설명을 확인하세요. 일반 함수 인수와 다를 수 있습니다.
테이블에 토토 커뮤니티를 생성하려면 사용자는 다음을 가지고 있어야 합니다.토토 커뮤니티테이블에 대한 권한. 사용자는 또한 다음을 수행해야 합니다.실행토토 커뮤니티 기능에 대한 권한입니다.
사용드롭 토토 커뮤니티토토 커뮤니티를 제거합니다.
열별 토토 커뮤니티(다음을 사용하여 정의된 토토 커뮤니티)업데이트구문)은 해당 열 중 하나라도 대상으로 나열되면 실행됩니다.열_이름업데이트명령의SET목록. 토토 커뮤니티가 실행되지 않은 경우에도 열의 값이 변경될 수 있습니다. 왜냐하면 행의 내용이 다음과 같이 변경되었기 때문입니다.업데이트 전토토 커뮤니티는 고려되지 않습니다. 반대로, 다음과 같은 명령은업데이트 ... 설정 x = x ...열에서 토토 커뮤니티를 실행합니다x, 열의 값이 변경되지 않은 경우에도 마찬가지입니다.
자신만의 토토 커뮤니티 코드를 작성하지 않고도 일반적인 문제를 해결하는 데 사용할 수 있는 몇 가지 내장된 토토 커뮤니티 기능이 있습니다. 참조503 배트맨 토토 페치 실패.
에이전토토 커뮤니티, 그언제조건은 함수가 실행되거나 실행되기 직전에 평가되므로 다음을 사용합니다.언제토토 커뮤니티 기능 시작 시 동일한 조건을 테스트하는 것과 크게 다르지 않습니다. 특히 다음 사항에 유의하세요.신규29354_29455이전토토 커뮤니티의언제조건은 시스템 열을 검사하는 것이 허용되지 않습니다.신규행(예:oid), 아직 설정되지 않았기 때문입니다.
안에이후토토 커뮤니티, 그언제조건은 행 업데이트가 발생한 직후 평가되며 명령문 끝에서 토토 커뮤니티를 실행하기 위해 이벤트가 대기열에 있는지 여부를 결정합니다. 그래서 언제이후토토 커뮤니티의언제조건이 true를 반환하지 않으면 이벤트를 대기열에 넣거나 명령문 끝에서 행을 다시 가져올 필요가 없습니다. 이로 인해 토토 커뮤니티가 일부 행에 대해서만 실행되어야 하는 경우 많은 행을 수정하는 문의 속도가 크게 향상될 수 있습니다.
어떤 경우에는 단일 SQL 명령이 두 종류 이상의 토토 커뮤니티를 실행하는 것이 가능합니다. 예를 들어삽입그리고충돌 시 업데이트를 하세요절은 삽입 및 업데이트 작업을 모두 발생시킬 수 있으므로 필요에 따라 두 종류의 토토 커뮤니티를 모두 실행합니다. 토토 커뮤니티에 제공되는 전환 관계는 해당 이벤트 유형에 따라 다릅니다. 따라서삽입토토 커뮤니티는 삽입된 행만 볼 수 있지만업데이트토토 커뮤니티는 업데이트된 행만 볼 수 있습니다.
다음과 같은 외래 키 시행 조치로 인한 행 업데이트 또는 삭제캐스케이드 업데이트 중또는ON 삭제 설정 NULL은 이를 발생시킨 SQL 명령의 일부로 처리됩니다(이러한 작업은 결코 지연되지 않습니다). 영향을 받은 테이블의 관련 토토 커뮤니티가 실행되므로 이는 SQL 명령이 해당 유형과 직접적으로 일치하지 않는 토토 커뮤니티를 실행할 수 있는 또 다른 방법을 제공합니다. 간단한 경우, 전이 관계를 요청하는 토토 커뮤니티는 단일 원래 SQL 명령으로 인해 테이블에 발생한 모든 변경 사항을 단일 전이 관계로 봅니다. 그러나 다음과 같은 경우가 있습니다.행 이후31582_32000
뷰의 명령문 수준 토토 커뮤니티는 뷰의 작업이 행 수준에서 처리되는 경우에만 실행됩니다.대신토토 커뮤니티. 작업이에 의해 처리되는 경우대신rule, 그러면 규칙에 의해 내보내지는 모든 명령문은 뷰 이름을 지정하는 원래 명령문 대신 실행되므로 실행될 토토 커뮤니티는 대체 명령문에 명명된 테이블의 토토 커뮤니티입니다. 마찬가지로, 뷰가 자동으로 업데이트 가능한 경우 해당 작업은 뷰의 기본 테이블에 있는 작업에 명령문을 자동으로 다시 작성하여 처리되므로 기본 테이블의 명령문 수준 토토 커뮤니티가 실행됩니다.
분할된 테이블에 행 수준 토토 커뮤니티를 생성하면 모든 기존 파티션에 동일한 토토 커뮤니티가 생성됩니다. 나중에 생성되거나 연결된 모든 파티션에도 동일한 토토 커뮤니티가 포함됩니다. 파티션이 상위 파티션에서 분리되면 토토 커뮤니티가 제거됩니다. 파티션을 나눈 테이블의 토토 커뮤니티는 다음과 같습니다.이후.
분할된 테이블이나 상속 하위가 있는 테이블을 수정하면 명시적으로 명명된 테이블에 연결된 명령문 수준 토토 커뮤니티가 실행되지만 해당 파티션이나 하위 테이블에 대한 명령문 수준 토토 커뮤니티는 실행되지 않습니다. 이와 대조적으로 행 수준 토토 커뮤니티는 쿼리에서 명시적으로 이름이 지정되지 않은 경우에도 영향을 받는 파티션 또는 하위 테이블의 행에서 실행됩니다. 명령문 수준 토토 커뮤니티가 a로 명명된 전환 관계로 정의된 경우참조 중절을 사용하면 영향을 받는 모든 파티션 또는 하위 테이블에서 행의 전후 이미지를 볼 수 있습니다. 상속 하위 항목의 경우 행 이미지에는 토토 커뮤니티가 연결된 테이블에 있는 열만 포함됩니다. 현재 전환 관계가 있는 행 수준 토토 커뮤니티는 파티션 또는 상속 하위 테이블에 정의할 수 없습니다.
에PostgreSQL7.3 이전 버전에서는 자리표시자 유형을 반환하는 토토 커뮤니티 함수를 선언해야 했습니다.불투명, 대신토토 커뮤니티. 이전 덤프 파일 로드를 지원하려면,토토 커뮤니티 생성반환으로 선언된 함수를 허용합니다불투명, 그러나 알림을 발행하고 함수의 선언된 반환 유형을 다음으로 변경합니다.토토 커뮤니티.
함수 실행check_account_update테이블의 행마다계정업데이트 예정:
토토 커뮤니티 생성 check_update
계정 업데이트 전
각 행에 대해
함수 실행 check_account_update();
동일하지만 열인 경우에만 함수를 실행합니다.균형은에서 대상으로 지정되었습니다.업데이트명령:
토토 커뮤니티 생성 check_update
계정 잔액 업데이트 전
각 행에 대해
함수 실행 check_account_update();
이 양식은 열인 경우에만 함수를 실행합니다.균형실제로 값이 변경되었습니다:
토토 커뮤니티 생성 check_update
계정 업데이트 전
각 행에 대해
언제(OLD.balance가 NEW.balance와 다름)
함수 실행 check_account_update();
업데이트를 기록하는 함수 호출계정, 그러나 뭔가 변경된 경우에만:
토토 커뮤니티 생성 log_update
계정 업데이트 후
각 행에 대해
언제(이전.*가 새.*와 다름)
함수 실행 log_account_update();
함수 실행view_insert_row각 행에 대해 뷰의 기본 테이블에 행을 삽입하려면:
토토 커뮤니티 생성 view_insert
my_view에 삽입하는 대신
각 행에 대해
함수 실행 view_insert_row();
함수 실행check_transfer_balances_to_zero각 문에 대해 다음을 확인합니다.이전행은 0으로 오프셋됩니다:
토토 커뮤니티 생성 transfer_insert
전송 시 삽입 후
삽입된 새 테이블 참조
각 명세서에 대해
함수 실행 check_transfer_balances_to_zero();
함수 실행check_matching_pairs각 행에 대해 (동일한 명령문에 의해) 일치하는 쌍이 동시에 변경되었는지 확인합니다.
토토 커뮤니티 생성 paired_items_update
paired_items 업데이트 후
새 테이블을 newtab으로 참조 OLD TABLE을 oldtab으로 참조
각 행에 대해
함수 실행 check_matching_pairs();
윈 토토 : 문서 : 11 : 39.4. 완전한 트리거 예C로 작성된 토토 커뮤니티 함수의 전체 예가 포함되어 있습니다.
그토토 커뮤니티 생성문의 내용PostgreSQL의 하위 집합을 구현합니다.SQL표준. 현재 다음 기능이 없습니다:
다음에 대한 전환 테이블 이름이후토토 커뮤니티는 다음을 사용하여 지정됩니다.참조 중절에서 표준 방식으로 사용되는 행 변수각 행에 대해토토 커뮤니티는 a에 지정될 수 없습니다.참조 중절. 토토 커뮤니티 기능이 작성된 언어에 따라 달라지지만 특정 언어에 대해 고정되는 방식으로 사용할 수 있습니다. 일부 언어는 마치 다음이 있는 것처럼 효과적으로 작동합니다.참조 중다음을 포함하는 절오래된 행을 새 행으로 사용.
표준에서는 전환 테이블을 열별로 사용할 수 있도록 허용합니다.업데이트토토 커뮤니티이지만 전환 테이블에 표시되어야 하는 행 세트는 토토 커뮤니티의 열 목록에 따라 다릅니다. 이는 현재 구현되지 않았습니다.PostgreSQL.
PostgreSQL단지 토토 커뮤니티된 작업에 대한 사용자 정의 함수의 실행을 허용합니다. 표준은 다음과 같은 여러 다른 SQL 명령의 실행을 허용합니다.테이블 생성, 토토 커뮤니티된 작업으로. 이 제한은 원하는 명령을 실행하는 사용자 정의 함수를 생성하여 해결하는 것이 어렵지 않습니다.
SQL은 생성 시간 순서에 따라 여러 토토 커뮤니티가 실행되어야 한다고 지정합니다.PostgreSQL더 편리한 것으로 판단된 이름 순서를 사용합니다.
SQL에서는 다음을 지정합니다.삭제 전연속 삭제 실행 토토 커뮤니티이후계단식삭제완료되었습니다.PostgreSQL행동은삭제 전삭제 작업 이전에 항상 실행합니다. 계단식 작업이라도 마찬가지입니다. 이는 더 일관된 것으로 간주됩니다. 다음과 같은 경우에도 비표준 동작이 있습니다.이전토토 커뮤니티는 참조 작업으로 인해 발생한 업데이트 중에 행을 수정하거나 업데이트를 방지합니다. 이로 인해 제약 조건 위반이 발생하거나 참조 제약 조건을 따르지 않는 저장된 데이터가 발생할 수 있습니다.
다음을 사용하여 단일 토토 커뮤니티에 대해 여러 작업을 지정하는 기능또는은포스트그레SQLSQL 표준의 확장입니다.
다음에 대한 토토 커뮤니티를 실행하는 능력잘라내기은PostgreSQL뷰에서 명령문 수준 토토 커뮤니티를 정의하는 기능과 마찬가지로 SQL 표준의 확장입니다.
제약 토토 커뮤니티 생성은PostgreSQL확장SQL표준.