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

40.9. 윈 토토 절차

40.9.1. 데이터 변경에 대한 윈 토토

pl/pgsql윈 토토 절차를 정의하는 데 사용할 수 있습니다. 윈 토토 절차가로 생성됩니다.108PostgreSQL : 문서 : 9.5 : 윈 토토 프로 시저60명령, 인수가없고 반환 유형의 함수로 선언윈 토토. 에 명시된 인수를받을 것으로 예상하더라도 기능은 인수없이 선언되어야합니다.윈 토토 만들기- 윈 토토 인수가 통과됩니다tg_argv, 아래 설명대로.

언제pl/pgsql함수는 윈 토토라고하며, 여러 특수 변수가 최상위 블록에서 자동으로 생성됩니다. 그들은 :

NEW

데이터 유형레코드; 새 데이터베이스 행을 보유하는 변수삽입/업데이트행 수준 트리거의 작동. 이 변수는 명세서 수준 윈 토토에서 할당되지 않았습니다.삭제운영.

old

데이터 유형레코드; 기존 데이터베이스 행을 보유하는 변수업데이트/삭제행 수준 트리거의 작동. 이 변수는 명세서 수준 윈 토토에서 할당되지 않았습니다.삽입운영.

tg_name

데이터 유형이름; 방아쇠의 이름이 실제로 해고 된 변수.

TG_WHEN

데이터 유형텍스트; 문자열,이후또는대신12473_12515

tg_level

데이터 유형텍스트; 둘 중 하나Row또는진술방아쇠의 정의에 따라

TG_OP

데이터 유형텍스트; 문자열삽입,업데이트,삭제또는Truncate윈 토토가 발생한 작업이 발생했는지 알려줍니다.

TG_RELID

데이터 유형OID; 윈 토토 호출을 일으킨 테이블의 객체 ID.

tg_relname

데이터 유형이름; 윈 토토 호출을 일으킨 테이블의 이름.tg_table_name대신.

tg_table_name

데이터 유형이름; 윈 토토 호출을 일으킨 테이블의 이름.

tg_table_schema

데이터 유형이름; 윈 토토 호출을 일으킨 테이블 스키마의 이름.

tg_nargs

데이터 유형Integer; 의 윈 토토 절차에 대한 인수의 수윈 토토 만들기진술.

tg_argv []

데이터 유형 배열텍스트; 의 논쟁윈 토토 만들기진술. 인덱스는 0에서 카운트합니다. 유효하지 않은 인덱스 (0보다 작거나tg_nargs) 널 값을 초래합니다.

윈 토토 함수는 중 하나를 반환해야합니다NULL또는 테이블의 구조를 가진 레코드/행 값은 윈 토토가 발사되었습니다.

로드 레벨 윈 토토 발사NULL을 반환하여 윈 토토 관리자 에게이 행의 나머지 작업을 건너 뛰도록 신호를 보낼 수 있습니다 (즉, 후속 윈 토토가 발사되지 않으며삽입/업데이트/삭제이 행에 대해서는 발생하지 않습니다). unnull 값이 반환되면 작업은 해당 행 값으로 진행됩니다.NEW삽입 또는 업데이트 될 행을 변경합니다. 따라서 윈 토토 함수가 윈 토토 조치가 행 값을 변경하지 않고 정상적으로 성공하기를 원한다면NEW(또는 동일한 값)를 반환해야합니다. 저장 될 행을 변경하려면 직접 단일 값을 대체 할 수 있습니다NEW수정 된 반환NEW또는 반품 할 새로운 레코드/행을 구축합니다. 전 트리거의 경우삭제, 반환 된 값은 직접적인 영향을 미치지 않지만 윈 토토 조치를 진행할 수 있도록 unnull이어야합니다. 참고NEW삭제윈 토토, 따라서 반환하는 것은 일반적으로 합리적이지 않습니다. 일반적인 관용구삭제윈 토토는 반환됩니다old.

대신윈 토토 (항상로드 레벨 윈 토토이며 시야에서만 사용될 수 있음)는 업데이트를 수행하지 않았 으며이 행의 나머지 작업이 건너 뛰지 않았다는 신호로 NULL을 반환 할 수 있습니다 (즉, 이후 윈 토토가 발사되지 않아야하며, 후속 윈 토토는 주변 환경에서 수에 이르지 않아야합니다.삽입/업데이트/삭제). 그렇지 않으면 윈 토토가 요청 된 작업을 수행했음을 알리려면 unnull 값을 반환해야합니다.삽입and업데이트운영, 반환 값은이어야합니다.NEW, 윈 토토 함수가 지원하도록 수정할 수있는반환 삽입and업데이트 반환(이것은 후속 윈 토토에게 전달 된 행 값에도 영향을 미치거나 특별한 사람에게 전달됩니다제외AN 내 별칭 참조삽입진술충돌에 대한 업데이트절). 을 위한삭제운영, 반환 값은이어야합니다.old.

로드 레벨 윈 토토의 반환 값이 발사되었습니다이후또는 명령문 수준 윈 토토 발사또는이후항상 무시됩니다. 그것은 널가 될 수도 있습니다.

예 40-3윈 토토 프로 시저의 예를 보여줍니다pl/pgsql.

예 40-3. 에이pl/pgsql윈 토토 프로 시저

이 예제 윈 토토는 테이블에 행이 삽입되거나 업데이트 될 때마다 현재 사용자 이름과 시간이 행에 찍혀 있는지 확인합니다. 그리고 직원의 이름이 주어지고 급여가 긍정적 인 가치인지 확인합니다.

테이블 emp 생성 (

테이블을 로그하는 또 다른 방법에는 각 삽입, 업데이트 또는 삭제에 대해 행을 보유하는 새 테이블을 작성하는 것이 포함됩니다. 이 접근법은 테이블에 대한 감사 변경으로 생각할 수 있습니다.예 40-4감사 윈 토토 절차의 예를 보여줍니다pl/pgsql.

예 40-4. 에이pl/pgsql감사를위한 윈 토토 절차

이 예제 윈 토토는에서 행을 삽입, 업데이트 또는 삭제하는지 확인합니다.emp테이블이 기록되어 있습니다 (예 : 감사)emp_audit테이블. 현재 시간과 사용자 이름은 수행 된 작업 유형과 함께 행에 찍혀 있습니다.

생성 테이블 emp (

이전 예제의 변형은 메인 테이블을 감사 테이블에 연결하는 뷰를 사용하여 각 항목이 마지막으로 수정 된 시점을 표시합니다. 이 접근법은 여전히 ​​테이블 변경의 전체 감사 트레일을 기록하지만 감사 트레일의 단순화 된 관점을 제시하여 각 항목에 대한 감사 트레일에서 파생 된 마지막 수정 된 타임 스탬프 만 보여줍니다..예 40-5뷰에서 감사 윈 토토의 예를 보여줍니다pl/pgsql.

예 40-5. 에이pl/pgsql감사를위한 윈 토토 절차보기

이 예제는보기에서 윈 토토를 사용하여 업데이트 가능하게 만들고 뷰에서 행을 삽입, 업데이트 또는 삭제하는지 확인하십시오 (즉, 감사)emp_audit테이블. 현재 시간과 사용자 이름은 수행 된 작업 유형과 함께 기록되며, View는 각 행의 마지막 수정 시간을 표시합니다.

테이블 emp 생성 (

윈 토토를 한 번 사용하는 것은 다른 테이블의 요약 테이블을 유지하는 것입니다. 결과 요약은 특정 쿼리에 대해 원래 테이블 대신에 사용될 수 있습니다. 종종 실행 시간이 크게 줄어 듭니다.예 40-6윈 토토 프로 시저의 예를 보여줍니다PL/PGSQL데이터웨어 하우스의 사실 테이블에 대한 요약 테이블을 유지합니다.

예 40-6. 에이pl/pgsql요약 테이블을 유지하기위한 윈 토토 절차

여기에 자세히 설명 된 스키마는 부분적으로입니다.식료품 점예제데이터웨어 하우스 툴킷By Ralph Kimball.

-

40.9.2. 이벤트에 대한 윈 토토

pl/pgsql이벤트 윈 토토를 정의하는 데 사용할 수 있습니다.PostgreSQL이벤트 윈 토토로 호출되는 절차는 인수가없고 반환 유형의 함수로 선언되어야합니다event_trigger.

언제pl/pgsql함수를 이벤트 윈 토토라고하며, 여러 특수 변수가 최상위 블록에서 자동으로 생성됩니다. 그들은 :

tg_event

데이터 유형텍스트; 윈 토토가 발사 된 이벤트를 나타내는 문자열.

TG_TAG

데이터 유형텍스트; 윈 토토가 발사되는 명령 태그가 포함 된 변수.

예 40-7이벤트 윈 토토 프로 시저의 예를 표시pl/pgsql.

예 40-7. 에이PL/PGSQL이벤트 윈 토토 프로 시저

이 예제 윈 토토는 단순히 a를 올립니다.통지31058_31111

함수 생성 또는 교체 snitch ()는 event_trigger를 $$로 반환합니다