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

43.10.윈 토토 기능

pl/pgsql데이터 변경 또는 데이터베이스 이벤트에서 윈 토토 기능을 정의하는 데 사용할 수 있습니다. 윈 토토 함수는로 생성됩니다.함수 만들기명령, 인수가없고 반환 유형의 함수로 선언윈 토토(데이터 변경 윈 토토 용) 또는event_trigger(데이터베이스 이벤트 윈 토토 용). 특별 지역 변수 이름TG_뭔가통화를 유발 한 조건을 설명하기 위해 자동으로 정의됩니다.

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

a토토 꽁 머니 : 문서인수가없고 반환 유형의 함수로 선언됩니다윈 토토. 에 명시된 일부 인수를받을 것으로 예상되는 경우에도 기능은 인수없이 선언되어야합니다.윈 토토 만들기- 그러한 주장은를 통해 전달됩니다tg_argv, 아래 설명 된대로.

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

NEW

데이터 유형레코드; 새 데이터베이스 행을 보유하는 변수삽입/업데이트행 수준 트리거의 작동. 이 변수는 명령문 수준 윈 토토가 무효이며삭제운영.

old

데이터 유형레코드; 기존 데이터베이스 행을 보유하는 변수업데이트/삭제행 수준 트리거의 작동. 이 변수는 명령문 수준 윈 토토가 무효이며삽입운영.

tg_name

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

TG_WHEN

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

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또는 테이블의 구조를 가진 레코드/행 값은 윈 토토가 발사되었습니다.

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

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

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

예 43.3윈 토토 함수의 예를 보여줍니다pl/pgsql.

예 43.3.에이pl/pgsql윈 토토 함수

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

테이블 emp 생성 (

테이블 로그를 로그하는 또 다른 방법은 각각 삽입, 업데이트 또는 삭제에 대해 행을 보유하는 새 테이블을 만드는 것과 관련이 있습니다. 이 접근법은 테이블에 대한 감사 변경으로 생각할 수 있습니다.예 43.4감사 윈 토토 기능의 예를 보여줍니다PL/PGSQL.

예 43.4.에이pl/pgsql감사를위한 윈 토토 기능

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

테이블 emp 제작 (

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

예 43.5.에이pl/pgsql감사를위한 윈 토토 기능보기

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

테이블 emp 생성 (

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

예 43.6.에이pl/pgsql요약 테이블을 유지하기위한 윈 토토 함수

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

-

이후윈 토토도 사용할 수 있습니다전환 테이블윈 토토 진술에 의해 변경된 전체 행 세트를 검사합니다. 그만큼윈 토토 만들기명령은 이름을 하나 또는 두 전환 테이블에 할당 한 다음 해당 이름을 읽기 전용 임시 테이블 인 것처럼 지정할 수 있습니다..예 43.7예를 보여줍니다.

예 43.7.전환 테이블을 사용한 감사

이 예제는와 동일한 결과를 생성합니다.예 43.4, 그러나 모든 행에 해고되는 윈 토토를 사용하는 대신 전환 테이블에서 관련 정보를 수집 한 후 명세서 당 한 번 발사되는 윈 토토를 사용합니다. 호출 문이 많은 행을 수정했을 때로드 윈 토토 접근법보다 훨씬 빠를 수 있습니다.참조조항은 각 사례마다 달라야합니다. 그러나 우리가 선택한 경우 단일 윈 토토 기능을 사용하는 것을 막지는 않습니다.TG_OP.)

테이블 emp 생성 (

43.10.2.이벤트에 대한 윈 토토

pl/pgsql정의에 사용될 수 있습니다PostgreSQL : 문서 : 11 : 40 장. 이벤트 배트맨 토토.PostgreSQL이벤트 윈 토토로 호출되는 함수는 인수가없고 반환 유형의 함수로 선언되어야합니다event_trigger.

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

tg_event

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

TG_TAG

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

예 43.8이벤트 윈 토토 함수의 예를 보여줍니다pl/pgsql.

예 43.8.에이pl/pgsql이벤트 윈 토토 함수

이 예제 윈 토토는 단순히 a를 올립니다.통지지원되는 명령이 실행될 때마다 메시지.

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