| PostgreSQL 9.1.24 문서 | ||||
|---|---|---|---|---|
| PostgreSQL : 문서 : 9.1 : 토토 꽁 머니 수 있고 토토 꽁 머니 수없는 pl/perl | 위로 | 41장. 무지개 토토/Perl - Perl 절차 언어 | PostgreSQL : 문서 : 9.1 : 후드 아래 PL/와이즈 토토 | |
무지개 토토/Perl을 사용하여 트리거 함수를 작성할 수 있습니다. 트리거에서 함수, 해시 참조$_TD현재 트리거 이벤트에 대한 정보가 포함되어 있습니다.$_TD은 별도의 변수를 가져오는 전역 변수입니다. 각 트리거 호출에 대한 로컬 값입니다. 의 필드$_TD해시 참조는 다음과 같습니다.
신규열의 값foo
오래된열 값foo
호출되는 트리거의 이름
트리거 이벤트:삽입, 업데이트, 삭제, 잘라내기, 또는알 수 없음
트리거가 호출되었을 때:이전, 이후, 대신또는알 수 없음
트리거 레벨:ROW, 진술문, 또는알 수 없음
트리거가 실행된 테이블의 OID
트리거가 실행된 테이블의 이름
트리거가 실행된 테이블의 이름. 이것은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 수 있습니다. 대신 $_TD-table_name을(를) 사용하세요.
테이블이 있는 스키마의 이름 트리거가 실행되었습니다.
트리거 함수의 인수 수
트리거 기능의 인수. 다음과 같은 경우 존재하지 않습니다.$_TD-argc0입니다.
행 수준 트리거는 다음 중 하나를 반환할 수 있습니다:
작업 실행
작업을 실행하지 마세요
다음을 나타냅니다.신규행은 트리거 기능에 의해 수정됨
다음은 트리거 기능의 예입니다. 위:
CREATE TABLE 테스트(
나는 int,
v varchar
);
생성 또는 교체 함수 valid_id()는 $$로 트리거를 반환합니다.
if (($_TD-newi = 100) || ($_TD-newi <= 0))
"건너뛰기"를 반환합니다. # INSERT/UPDATE 명령을 건너뜁니다.
elsif ($_TD-newv ne "불멸")
$_TD-newv .= "(트리거에 의해 수정됨)";
"수정"을 반환합니다. # 행을 수정하고 INSERT/UPDATE 명령을 실행합니다.
그렇지 않으면
반환; # INSERT/UPDATE 명령을 실행합니다.