| PostgreSQL 9.1.24 문서 | ||||
|---|---|---|---|---|
| PostgreSQL : 문서 : 9.1 : PL/젠 토토에서 젠 토토 액세스 | 위로 | 40장. PL/토토 캔 - 토토 캔 절차 언어 | 스포츠 토토 결과 : 문서 : 9.1 : 모듈과 알 수없는 명령 | |
트리거 절차는 PL/토토 캔로 작성될 수 있습니다.PostgreSQL다음과 같은 절차가 필요합니다. 트리거로 호출하려면 함수로 선언해야 합니다. 인수 및 반환 유형트리거.
트리거 관리자의 정보가 다음으로 전달됩니다. 다음 변수의 프로시저 본문:
다음의 트리거 이름트리거 생성진술.
트리거를 발생시킨 테이블의 개체 ID 호출할 프로시저입니다.
트리거 절차를 발생시킨 테이블의 이름 호출됩니다.
트리거를 발생시킨 테이블의 스키마 호출할 프로시저입니다.
접두사가 붙은 테이블 열 이름의 토토 캔 목록
빈 목록 요소. 따라서 목록에서 열 이름을 조회합니다.
와 함께토토 캔'slsearch명령은 요소의
같은 방식으로 첫 번째 열의 경우 1로 시작하는 숫자
열에는 관례적으로 번호가 매겨져 있습니다.PostgreSQL. (빈 목록 요소도
삭제된 열의 위치에 나타납니다.
열의 속성 번호 지정이 정확하도록
그들의 권리입니다.)
문자열이전, 이후또는대신 OF, 트리거 이벤트 유형에 따라 다름.
문자열ROW또는진술문트리거 유형에 따라 다름 이벤트.
문자열삽입, 업데이트, 삭제또는잘라내기유형에 따라 다름 이벤트를 트리거합니다.
새 값을 포함하는 연관 배열 에 대한 테이블 행삽입또는업데이트작업 또는 비어 있음삭제. 배열은 열 이름으로 인덱싱됩니다. null인 열은 배열에 표시되지 않습니다. 이것은 문 수준 트리거에는 설정되지 않았습니다.
이전 값을 포함하는 연관 배열 에 대한 테이블 행업데이트또는삭제작업 또는 비어 있음삽입. 배열은 열 이름으로 인덱싱됩니다. null인 열은 배열에 표시되지 않습니다. 이것은 문 수준 트리거에는 설정되지 않았습니다.
다음에 제공된 프로시저에 대한 인수의 토토 캔 목록트리거 생성성명. 이러한 인수는 다음과 같이 액세스할 수도 있습니다.$1 ... $n프로시저 본문에서.
트리거 프로시저의 반환 값은 다음 중 하나일 수 있습니다. 문자열확인또는건너뛰기또는에서 반환된 목록배열 가져오기토토 캔 명령. 반환 값이 다음과 같은 경우확인, 연산(삽입/업데이트/삭제14759_14811건너뛰기트리거 관리자에게 알립니다. 이 행에 대한 작업을 자동으로 억제합니다. 목록이 다음과 같은 경우 반환되면 PL/토토 캔에게 수정된 행을 트리거에 반환하도록 지시합니다. 매니저. 이는 행 수준에만 의미가 있습니다.이전 삽입또는업데이트수정된 트리거 에 제공된 행 대신 행이 삽입됩니다.$NEW; 또는 행 수준의 경우대신 OF 삽입또는업데이트반환된 행이 사용되는 트리거 지원반환 삽입그리고업데이트 반환 중명령. 반환 값은 다음과 같습니다 다른 유형의 트리거에서는 무시됩니다.
여기에 강제로 실행하는 트리거 절차의 작은 예가 있습니다. 업데이트 횟수를 추적하기 위한 테이블의 정수 값 행에서 수행되는 것입니다. 새 행이 삽입된 경우 값 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');
트리거 절차 자체는 열 이름; 이는 트리거 인수에서 제공됩니다. 이 트리거 프로시저를 다른 테이블에서 재사용할 수 있습니다.