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

24.3. 토토 사이트 순위 절차

PL/pgSQL을 사용하여 트리거 프로시저를 정의할 수 있습니다. 그들은 평소와 같이 생성됨함수 생성인수 없이 함수로 명령하고 반환 유형은불투명.

몇몇이 있습니다포스트그레트리거 프로시저로 사용되는 함수의 구체적인 세부정보입니다.

먼저 자동으로 생성된 특수 변수가 있습니다. 최상위 블록 선언 섹션에 있습니다. 그들은

신규

데이터 유형기록; 가변 보유 ROW의 INSERT/UPDATE 작업에 대한 새 데이터베이스 행 레벨 토토 사이트 순위.

오래된

데이터 유형기록; 가변 보유 ROW의 UPDATE/DELETE 작업에 대한 이전 데이터베이스 행 레벨 트리거.

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 또는 다음을 포함하는 레코드/행을 반환해야 합니다. 트리거가 실행된 테이블의 구조와 정확히 일치합니다. AFTER가 실행된 트리거는 항상 NULL 값을 반환할 수 있습니다. 효과. 트리거 관리자에게 건너뛰도록 신호를 보내기 전에 트리거가 실행됩니다. NULL을 반환할 때 이 실제 행에 대한 작업입니다. 그렇지 않으면, 반환된 레코드/행은 작업. 단일 값을 직접 바꿀 수 있습니다. NEW를 선택하고 이를 반환하거나 완전히 새로운 레코드/행을 작성합니다. 반품.

예 24-1. PL/pgSQL 트리거 프로시저 예

이 트리거는 행이 삽입되거나 테이블에 업데이트되면 현재 사용자 이름과 시간이 표시됩니다. 행에 스탬프가 찍혀 있습니다. 그리고 직원 이름이 다음과 같은지 확인합니다. 주어지며 급여는 양수 값입니다.

테이블 emp 생성(
    엠프 이름 텍스트,
    급여 정수,
    last_date 타임스탬프,
    last_user 텍스트
);

CREATE FUNCTION emp_stamp ()는 OPAQUE를 '로 반환합니다.
    시작하다
        -- 사원명과 급여가 입력되었는지 확인하세요.
        NEW.empname이 ISNULL인 경우
            RAISE EXCEPTION ''empname은 NULL 값이 될 수 없습니다'';
        종료하면;
        NEW.salary가 NULL인 경우
            RAISE EXCEPTION ''%는 NULL 급여를 가질 수 없습니다'', NEW.empname;
        종료하면;

        -- 그녀가 비용을 지불해야 할 때 누가 우리를 위해 일합니까?
        NEW.salary < 0이면
            RAISE EXEPTION ''%는 음수 급여를 가질 수 없습니다'', NEW.empname;
        종료하면;

        -- 언제 급여를 변경했는지 기억해 보세요.
        NEW.last_date := ''지금'';
        NEW.last_user := 현재_사용자;
        새로운 반품;
    끝;
' 언어 'plpgsql';

emp를 삽입하거나 업데이트하기 전에 emp_stamp 트리거를 생성하세요.
    각 행 실행 절차 emp_stamp();