토토 베이 생성새 토토 베이를 생성합니다. 토토 베이는 지정된 테이블과 연결되며 지정된 기능을 실행합니다함수_이름특정 이벤트가 발생하면 발생하다.
토토 베이는 다음 중 하나 이전에 실행되도록 지정할 수 있습니다. 행에서 작업이 시도됩니다(제약조건을 확인하기 전에). 그리고삽입, 업데이트또는삭제이다 시도) 또는 작업이 완료된 후(후 제약 조건이 확인되고삽입, 업데이트, 또는삭제완료되었습니다). 토토 베이가 이전에 실행된 경우 이벤트가 발생하면 토토 베이는 현재 작업을 건너뛸 수 있습니다. 행을 변경하거나 삽입되는 행을 변경합니다(for삽입그리고업데이트작업 전용). 이벤트 이후에 토토 베이가 실행되면 모든 다른 토토 베이의 효과를 포함한 변경 사항은 다음과 같습니다."표시됨"토토 베이에.
표시된 토토 베이각 행에 대해는 작업이 수정하는 모든 행에 대해 한 번씩 호출됩니다. 을 위한 예를 들어, a삭제10개 행에 영향을 미침 어떤 원인이 될 것입니다삭제 중에 대한 토토 베이 대상 관계는 각각 한 번씩, 10번 호출됩니다. 삭제된 행. 대조적으로, 다음과 같이 표시된 토토 베이는각 명령문에 대해어떤 경우든 한 번만 실행됩니다. 수정되는 행 수에 관계없이 주어진 작업( 특히, 0개 행을 수정하는 작업은 여전히 해당하는 모든 조치가 실행됩니다.에 대한 각 진술토토 베이).
또한 다음을 위해 실행되도록 토토 베이를 정의할 수 있습니다.잘라내기하지만 오직각각 성명.
또한 토토 베이 정의는 부울을 지정할 수 있습니다.언제조건을 확인하기 위해 테스트됩니다. 방아쇠를 발사해야 하는지 여부. 행 수준에서 토토 베이는언제조건은 이전을 검사할 수 있습니다. 및/또는 행 열의 새 값. 명령문 수준 토토 베이 또한 가질 수 있습니다언제조건이지만 조건이 불가능하기 때문에 이 기능은 그들에게 그다지 유용하지 않습니다. 표의 값을 참조하세요.
동일한 유형의 여러 토토 베이가 동일한 항목에 대해 정의된 경우 이벤트가 발생하면 이름의 알파벳 순서로 실행됩니다.
선택행을 수정하지 않으므로 당신은 만들 수 없습니다선택토토 베이. 규칙 그러한 경우에는 뷰가 더 적합합니다.
참조PostgreSQL : 문서 : 9.0 : 토토 결과더 보기 토토 베이에 대한 정보입니다.
새 토토 베이에 부여할 이름입니다. 이는 구별되어야 합니다. 동일한 테이블에 대한 다른 토토 베이의 이름에서 가져온 것입니다.
함수가 이전에 호출되었는지 또는 이전에 호출되었는지 결정합니다. 행사가 끝난 후.
다음 중 하나삽입, 업데이트, 삭제또는잘라내기; 이것은 이벤트를 지정합니다 그러면 방아쇠가 발사됩니다. 여러 이벤트가 가능합니다. 다음을 사용하여 지정됨또는.
용업데이트토토 베이입니다. 이것을 사용하여 열 목록을 지정할 수 있습니다 통사론:
업데이트열_이름1 [, column_name2 ... ]
토토 베이는 나열된 것 중 적어도 하나가 있는 경우에만 실행됩니다. 열이 업데이트 대상으로 언급됩니다.
테이블의 이름(선택적으로 스키마 한정) 토토 베이는 다음을 위한 것입니다.
이것은 토토 베이 절차가 다음과 같아야 하는지 여부를 지정합니다. 토토 베이 이벤트의 영향을 받은 모든 행에 대해 한 번 실행됩니다. SQL 문당 한 번만. 둘 다 지정되지 않은 경우,각 진술에 대해이것은 기본.
토토 베이 여부를 결정하는 부울 표현식 함수가 실제로 실행됩니다. 만약에언제이 지정되면 함수는 다음과 같습니다. 다음과 같은 경우 호출됩니다.조건반환참. 안에각 행에 대해토토 베이,언제조건은 다음의 열을 참조할 수 있습니다. 다음을 작성하여 이전 및/또는 새 행 값오래된.열_이름또는새로운.열_이름각각. 의 강의,삽입토토 베이는 할 수 없습니다 참조오래된그리고삭제토토 베이는 참조할 수 없습니다.신규.
현재,언제표현 하위 쿼리를 포함할 수 없습니다.
아니요를 취하는 것으로 선언된 사용자 제공 함수 인수 및 반환 유형토토 베이, 토토 베이가 실행될 때 실행됩니다. 화재.
선택적인 쉼표로 구분된 인수 목록입니다. 토토 베이가 실행될 때 함수에 제공됩니다. 그만큼 인수는 리터럴 문자열 상수입니다. 간단한 이름과 숫자 상수도 여기에 쓸 수 있지만 모두 문자열로 변환됩니다. 설명을 확인해주세요 토토 베이 함수의 구현 언어 이러한 인수에 어떻게 액세스할 수 있는지 알아보세요. 기능; 정상적인 기능과 다를 수 있습니다 인수.
테이블에 토토 베이를 생성하려면 사용자는 다음을 가지고 있어야 합니다.토토 베이테이블에 대한 권한입니다. 사용자 또한 있어야 합니다실행에 대한 권한 토토 베이 기능.
사용토토 커뮤니티 : 문서 : 9.0 : 드롭 트리거제거하다 방아쇠.
열별 토토 베이(업데이트 내용열_이름)는 다음과 같은 경우에 실행됩니다. 해당 열은 모두 대상으로 나열됩니다.업데이트명령의세트목록. 열의 값은 다음과 같은 경우에도 변경될 수 있습니다. 행의 내용이 변경되었기 때문에 토토 베이가 실행되지 않습니다. 에 의해업데이트 전토토 베이가 아닙니다. 존경받는. 반대로, 다음과 같은 명령은업데이트 ... 설정 x = x ...다음에 토토 베이를 실행합니다. 열x, 열의 값이 변하지 않았습니다.
에이전토토 베이, 그언제조건은 다음 직전에 평가됩니다. 함수가 실행 중이거나 실행될 예정이므로 다음을 사용하세요.언제테스트와 실질적으로 다르지 않습니다. 토토 베이 기능 시작 시 동일한 조건. 메모 특히신규다음이 본 행 조건은 이전에 의해 수정되었을 수 있는 현재 값입니다. 토토 베이. 또한, 가이전토토 베이의언제조건을 검사할 수 없습니다. 의 시스템 열신규행(예: 처럼oid), 왜냐하면 그건 그렇지 않았을 것이기 때문입니다. 아직 설정되지 않았습니다.
한이후토토 베이, 그언제조건은 행 바로 다음에 평가됩니다. 업데이트가 발생하고 이벤트가 대기열에 있는지 여부를 결정합니다. 명령문 끝에서 토토 베이를 실행합니다. 그래서 언제이후토토 베이의언제조건이 true를 반환하지 않으므로 대기열에 추가할 필요가 없습니다. 이벤트가 종료될 때 행을 다시 가져오지도 않습니다. 이것은 할 수 있다 많은 부분을 수정하는 명령문의 속도가 크게 향상됩니다. 행, 토토 베이가 몇 개의 행에 대해서만 실행되어야 하는 경우 행.
에포스트그레SQL이전 버전 7.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();
무지개 토토 : 문서 : 9.0 : 완전한 트리거 예다음을 포함 C로 작성된 토토 베이 함수의 전체 예
그토토 베이 생성문의 내용PostgreSQL하위 집합을 구현합니다. 의SQL표준. 그만큼 현재 다음 기능이 없습니다:
SQL을 사용하면 다음에 대한 별칭을 정의할 수 있습니다."오래된"그리고"새로운"토토 베이된 정의에 사용되는 행 또는 테이블 작업(예:토토 베이 생성 ... 켜짐 테이블 이름 REFERENCING OLD ROW AS somename NEW ROW AS 다른 이름 ...). 부터PostgreSQL토토 베이 프로시저를 허용합니다. 원하는 수의 사용자 정의 언어로 작성 가능 데이터는 언어별 방식으로 처리됩니다.
포스트그레SQL만 허용합니다 토토 베이된 사용자 정의 함수의 실행 행동. 표준은 다양한 실행을 허용합니다. 다른 SQL 명령(예:만들기 테이블, 토토 베이된 작업으로. 이 제한은 그렇지 않습니다. 사용자 정의 함수를 생성하여 해결하기가 어렵습니다. 원하는 명령을 실행합니다.
SQL은 여러 토토 베이가 실행되어야 함을 지정합니다. 생성 시간 순서입니다.포스트그레SQL판단된 이름 순서를 사용합니다. 좀 더 편리하게.
SQL에서는 다음을 지정합니다.삭제 전연속 삭제 실행 토토 베이이후계단식삭제완료되었습니다. 그만큼PostgreSQL행동은삭제 전삭제 전에 항상 실행 액션, 심지어 계단식 액션까지. 이는 더 일관된 것으로 간주됩니다. 다음과 같은 경우에도 예측할 수 없는 동작이 발생합니다.이전토토 베이는 행을 수정하거나 업데이트를 방지합니다. 참조 작업으로 인해 발생한 업데이트 중 이것은 할 수 있다 제약 조건 위반 또는 이를 준수하지 않는 저장된 데이터로 이어짐 참조 제약 조건입니다.
단일 토토 베이에 대해 여러 작업을 지정하는 기능 사용 중또는은PostgreSQLSQL 확장 기준.
다음에 대한 토토 베이를 실행하는 능력잘라내기은PostgreSQLSQL 확장 기준.