이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 42.6. PL/토토 베이에서의 트리거 기능버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

41.6. PL/배트맨 토토의 트리거 절차

트리거 절차는 PL/배트맨 토토로 작성될 수 있습니다.PostgreSQL다음과 같은 절차가 필요합니다. 트리거로 호출하려면 함수로 선언해야 합니다. 인수 및 반환 유형트리거.

트리거 관리자의 정보가 다음으로 전달됩니다. 다음 변수의 프로시저 본문:

$TG_name

다음의 트리거 이름만들기 트리거진술.

$TG_relid

트리거 프로시저를 발생시킨 테이블의 개체 ID 호출됩니다.

$TG_table_name

트리거 프로시저를 발생시킨 테이블의 이름 호출되었습니다.

$TG_table_schema

트리거 프로시저를 발생시킨 테이블의 스키마 호출되었습니다.

$TG_relatts

빈 접두사가 붙은 테이블 열 이름의 배트맨 토토 목록 목록 요소. 따라서 다음을 사용하여 목록에서 열 이름을 검색합니다.배트맨 토토lsearch명령은 요소의 번호를 반환합니다. 첫 번째 열은 1부터 시작하며 열도 마찬가지입니다. 관례적으로 번호가 매겨져 있음포스트그레SQL. (빈 목록 요소도 나타납니다. 삭제된 열 위치에 오른쪽 열의 속성 번호 매기기가 정확합니다.)

$TG_when

문자열이전, 이후, 또는대신, 트리거 이벤트 유형에 따라 다릅니다.

$TG_level

문자열ROW또는진술문트리거 유형에 따라 다름 이벤트.

$TG_op

문자열삽입, 업데이트, 삭제또는잘라내기트리거 유형에 따라 다름 이벤트.

$NEW

새 테이블 행의 값을 포함하는 연관 배열 에 대한삽입또는업데이트작업 또는 비어 있음삭제. 배열은 열 이름으로 인덱싱됩니다. 열 null은 배열에 나타나지 않습니다. 다음 항목으로 설정되지 않았습니다. 명령문 수준 트리거.

$OLD

이전 테이블 행의 값을 포함하는 연관 배열 에 대한업데이트또는삭제작업 또는 비어 있음삽입. 배열은 열 이름으로 인덱싱됩니다. 열 null은 배열에 나타나지 않습니다. 다음 항목으로 설정되지 않았습니다. 명령문 수준 트리거.

$args

다음에 주어진 절차에 대한 인수의 배트맨 토토 목록트리거 생성성명. 이러한 주장 다음과 같이 액세스할 수도 있습니다.$1 ... $n절차 중 몸.

트리거 프로시저의 반환 값은 다음 중 하나일 수 있습니다. 문자열확인또는건너뛰기또는 열 이름/값 쌍 목록입니다. 만약 반환 값은확인, 작업 (삽입/업데이트/삭제)이 실행되었습니다. 트리거는 정상적으로 진행됩니다.건너뛰기트리거 관리자에게 다음 작업을 자동으로 억제하도록 지시합니다. 이 행. 목록이 반환되면 PL/배트맨 토토에게 다음을 반환하라고 지시합니다. 트리거 관리자에 대한 수정된 행; 수정된 내용 행은 목록의 열 이름과 값으로 지정됩니다. 모두 목록에 언급되지 않은 열은 null로 설정됩니다. 반환 수정된 행은 행 수준에서만 의미가 있습니다.이전 삽입또는업데이트트리거, 수정된 행은 다음과 같습니다. 에 제공된 것 대신에 삽입됨$NEW; 또는 행 수준의 경우대신 삽입또는업데이트트리거 여기서 반환된 행은 소스 데이터로 사용됩니다.반환 삽입또는업데이트 돌아오는 중절. 행 수준에서이전 삭제또는대신 삭제트리거, 수정된 행을 반환하는 것은 반환과 동일한 효과를 갖습니다.확인즉, 작업이 진행됩니다. 는 다른 모든 유형의 경우 트리거 반환 값이 무시됩니다. 트리거합니다.

팁:결과 목록은 배열로 만들 수 있습니다 수정된 튜플을로 표현배열 가져오기배트맨 토토 명령입니다.

다음은 정수를 강제하는 트리거 절차의 작은 예입니다. 업데이트 횟수를 추적하기 위해 테이블의 값 행에서 수행됩니다. 삽입된 새 행의 경우 값은 다음과 같습니다. 0으로 초기화된 다음 업데이트할 때마다 증가합니다. 작동합니다.

CREATE FUNCTION trigfunc_modcount() $$로 트리거를 반환합니다.
    $TG_op 전환 
        삽입 
            신규 설정($1) 0

        업데이트 
            새로운 설정($1) $OLD($1)
            신규($1) 증가

        기본값 
            반품 확인

    반환 [배열 새로 가져오기]
$$ 언어 pltcl;

CREATE TABLE mytab(숫자 정수, 설명 텍스트, modcnt 정수);

mytab에 삽입하거나 업데이트하기 전에 트리거 trig_mytab_modcount를 생성하세요.
    각 행 실행 절차에 대해 trigfunc_modcount('modcnt');

트리거 절차 자체는 열 이름; 이는 트리거 인수에서 제공됩니다. 이렇게 하면 트리거 프로시저는 다른 테이블에서 재사용됩니다.