이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 41.10. 메이저 토토 사이트 기능버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

24.3. 토토 사이트 순위 절차

PL/PGSQL을 사용하여 트리거 절차를 정의 할 수 있습니다. 그들은입니다 평소와 함께 생성함수 만들기인수가없고 반환 유형의 함수로 명령opaque.

일부가 있습니다Postgres토토 사이트 순위 절차로 사용되는 함수의 특정 세부 사항.

먼저 몇 가지 특수 변수가 자동으로 생성되었습니다 최상위 차단 선언 섹션에서. 그들은

NEW

데이터 유형레코드; 가변 보유 삽입/업데이트 작업의 새로운 데이터베이스 행 레벨 토토 사이트 순위.

old

데이터 유형레코드; 가변 보유 행의 업데이트/삭제의 기존 데이터베이스 행 레벨 토토 사이트 순위.

tg_name

데이터 유형이름; 변수 실제로 해고 된 방아쇠의 이름이 포함되어 있습니다.

TG_WHEN

데이터 유형텍스트; 둘 중 하나또는이후토토 사이트 순위에 따라 정의.

tg_level

데이터 유형텍스트; 둘 중 하나Row또는진술토토 사이트 순위에 따라 정의.

TG_OP

데이터 유형텍스트; 문자열삽입, 업데이트또는삭제실제로 토토 사이트 순위가 어떤 작업인지 알 수 있습니다 해고.

TG_RELID

데이터 유형OID; 객체 ID 토토 사이트 순위 호출을 일으킨 테이블

tg_relname

데이터 유형이름; 이름의 이름 트리거 호출을 일으킨 테이블

tg_nargs

데이터 유형정수; 수 의 토토 사이트 순위 절차에 대한 인수토토 사이트 순위 만들기진술.

tg_argv []

데이터 유형 배열텍스트; 그만큼 의 논쟁토토 사이트 순위 만들기진술. 인덱스는 0에서 계산되며 표현. 유효하지 않은 인덱스 (<0 또는 = tg_nargs) 널 값을 초래합니다.

두 번째로 널 또는 레코드/행 포함 된 레코드를 반환해야합니다. 정확히 테이블의 구조가 방아쇠를 발사했습니다. 발사 된 트리거는 항상 null 값을 반환 할 수 있습니다. 효과. 트리거 관리자에게 건너 뛰기 전에 발사 된 트리거 NULL을 반환 할 때이 실제 행의 작업. 그렇지 않으면, 반환 된 레코드/행은 삽입/업데이트 된 행을 대체합니다 작업. 단일 값을 직접 대체 할 수 있습니다 새로 돌아 가거나 다시 돌아 오거나 완전한 새로운 레코드/행을 구축하십시오. 반품.

예 24-1. PL/PGSQL 트리거 절차 예

이 트리거는 행이 삽입되거나 테이블에서 업데이트, 현재 사용자 이름과 시간은 다음과 같습니다. 줄에 찍혔습니다. 그리고 직원 이름이 있는지 확인합니다 주어지고 급여는 긍정적 인 가치입니다.

테이블 emp 생성 (
    Empname 텍스트,
    급여 정수,
    last_date timestamp,
    last_user 텍스트
);

함수 만들기 emp_stamp ()는 불투명을 '반환'
    시작하다
        - empname과 월급이 주어 졌는지 확인하십시오
        새로운.EmpName ISNULL이라면
            ``Empname은 널 값이 될 수 없다 ''는 예외를 높이십시오.
        끝 IF;
        그렇다면 isnull이라면
            예외 제기 ''%는 널 급여를 가질 수 없습니다 '', new.empname;
        끝 IF;

        - 그녀가 지불해야 할 때 누가 우리를 위해 일합니까?
        새로운.salary <0이라면
            예외 제기 ''%는 부정적인 급여를 가질 수 없습니다 '', new.empname;
        끝 IF;

        - 누가 급여를 바꾸 었는지 기억하십시오
        new.last_date : = ''now '';
        new.last_user : = current_user;
        새로운 반환;
    끝;
'언어'plpgsql ';

EMP에 삽입하거나 업데이트하기 전에 Trigger Emp_stamp를 만듭니다
    각 행에 대해 Execute Procedure Emp_stamp ();