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

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

트리거 절차는 pl/배트맨 토토에서 작성할 수 있습니다.PostgreSQL그 절차가 필요합니다 트리거라고 불리는 것은 인수 및 반환 유형트리거.

트리거 관리자의 정보가 전달됩니다. 다음 변수의 절차 본문 :

$ tg_name

생성 방아쇠진술.

$ tg_relid

트리거 절차를 일으킨 테이블의 객체 ID 불러야합니다.

$ tg_table_name

트리거 절차가 발생한 테이블의 이름 호출.

$ tg_table_schema

트리거 절차를 일으킨 테이블의 스키마 호출.

$ tg_relatts

비어있는 테이블 열 이름의 배트맨 토토 목록 목록 요소. 그래서 목록에서 열 이름을 찾고배트맨 토토'slsearch명령은 요소 번호를 반환합니다 첫 번째 열의 1로 시작하여 열이 같은 방식으로 관례 적으로 번호가 매겨PostgreSQL. (빈 목록 요소도 나타납니다 삭제 된 열의 위치에서 속성 번호는 오른쪽에있는 열에 맞습니다.)

$ tg_when

문자열, 이후또는대신, 트리거 이벤트 유형에 따라

$ tg_level

문자열Row또는성명서트리거 유형에 따라 이벤트.

$ tg_op

문자열삽입, 업데이트, 삭제또는Truncate트리거 유형에 따라 다릅니다 이벤트.

$ new

새 테이블 행의 값을 포함하는 연관 배열 을 위한삽입또는업데이트동작 또는 비어삭제. 배열은 열 이름으로 색인됩니다. 열 널은 배열에 나타나지 않습니다. 이것은 설정되지 않았습니다 진술 수준 트리거.

$ old

이전 테이블 행의 값을 포함하는 연관 배열 을 위한업데이트또는삭제동작 또는 비어삽입. 배열은 열 이름으로 색인됩니다. 열 널은 배열에 나타나지 않습니다. 이것은 설정되지 않았습니다 진술 수준 트리거.

$ args

a 배트맨 토토에 주어진 절차에 대한 인수 목록트리거 만들기진술. 이 주장 도 액세스 할 수 있습니다.$ 1 ... $n절차에서 몸.

트리거 프로 시저의 리턴 값은 문자열OK또는건너 뛰기또는 열 이름/값 쌍의 목록. 만약 반환 값은OK, 작업 (삽입/업데이트/삭제) 해고 된 방아쇠가 정상적으로 진행됩니다.skip트리거 관리자에게 조작을 조용히 억제하도록 지시합니다. 이 행. 목록이 반환되면 PL/배트맨 토토에 반환하도록 지시합니다. 트리거 관리자에게 수정 된 행; 수정 된 내용 행은 목록의 열 이름과 값으로 지정됩니다. 어느 목록에 언급되지 않은 열은 null로 설정됩니다. 반환 a 수정 된 행은 행 수준에만 의미가 있습니다 삽입또는업데이트수정 된 행이있는 트리거 대신 삽입$ new; 또는 줄 수준대신 삽입또는업데이트트리거 반환 된 행이 소스 데이터로 사용되는 경우반환 삽입또는업데이트 반환조항. 로드 레벨 삭제또는대신 삭제트리거, 수정 된 행을 반환하는 것은 반환과 같은 효과입니다OK, 이는 작업이 진행됩니다. 그만큼 다른 모든 유형의 트리거 리턴 값은 무시됩니다. 트리거.

팁 :결과 목록은 배열에서 만들 수 있습니다 수정 된 튜플의 표현배열 get배트맨 토토 명령.

정수를 강요하는 작은 예제 트리거 절차가 있습니다. 테이블의 값은 업데이트 수를 추적합니다. 행에서 수행되었습니다. 삽입 된 새 행의 경우 값이 있습니다 0으로 초기화 한 다음 모든 업데이트에서 증가했습니다 작업.

함수 만들기 trigfunc_modcount ()는 트리거를 $$로 반환합니다
    스위치 $ tg_op 
        삽입 
            새 ($ 1) 0을 설정하십시오

        업데이트 
            새로 설정 ($ 1) $ old ($ 1)
            새로운 새로운 ($ 1)

        기본 
            OK를 반환합니다

    반환 [배열이 새로워지기]
$$ 언어 pltcl;

테이블 마이 타브 생성 (Num Integer, Description Text, Modcnt Integer);

mytab에 삽입하거나 업데이트하기 전에 trigger trig_mytab_modcount를 만듭니다
    각 행마다 실행 절차 trigfunc_modcount ( 'modcnt');

트리거 절차 자체가 열 이름; 그것은 트리거 인수에서 제공됩니다. 이것은 허용합니다 트리거 절차에는 다른 테이블이 재사용됩니다.