롤 토토 : 문서 : 9.5 : 롤 토토 9 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.5 : 토토 결과 및 메시지 | Postgre토토 사이트 순위 : 문서 : 9.5 : PL/PG토토 사이트 순위 -토토 사이트 순위 절차 언어 | 40 장pl/pgsql-SQL절차 언어 | 다음 |
pl/pgsql윈 토토 절차를 정의하는 데 사용할 수 있습니다. 윈 토토 절차가로 생성됩니다.108PostgreSQL : 문서 : 9.5 : 윈 토토 프로 시저60명령, 인수가없고 반환 유형의 함수로 선언윈 토토. 에 명시된 인수를받을 것으로 예상하더라도 기능은 인수없이 선언되어야합니다.윈 토토 만들기- 윈 토토 인수가 통과됩니다tg_argv, 아래 설명대로.
언제pl/pgsql함수는 윈 토토라고하며, 여러 특수 변수가 최상위 블록에서 자동으로 생성됩니다. 그들은 :
데이터 유형레코드; 새 데이터베이스 행을 보유하는 변수삽입/업데이트행 수준 트리거의 작동. 이 변수는 명세서 수준 윈 토토에서 할당되지 않았습니다.삭제운영.
데이터 유형레코드; 기존 데이터베이스 행을 보유하는 변수업데이트/삭제행 수준 트리거의 작동. 이 변수는 명세서 수준 윈 토토에서 할당되지 않았습니다.삽입운영.
데이터 유형이름; 방아쇠의 이름이 실제로 해고 된 변수.
데이터 유형텍스트; 문자열전,이후또는대신12473_12515
데이터 유형텍스트; 둘 중 하나Row또는진술방아쇠의 정의에 따라
데이터 유형텍스트; 문자열삽입,업데이트,삭제또는Truncate윈 토토가 발생한 작업이 발생했는지 알려줍니다.
데이터 유형OID; 윈 토토 호출을 일으킨 테이블의 객체 ID.
데이터 유형이름; 윈 토토 호출을 일으킨 테이블의 이름.tg_table_name대신.
데이터 유형이름; 윈 토토 호출을 일으킨 테이블의 이름.
데이터 유형이름; 윈 토토 호출을 일으킨 테이블 스키마의 이름.
데이터 유형Integer; 의 윈 토토 절차에 대한 인수의 수윈 토토 만들기진술.
데이터 유형 배열텍스트; 의 논쟁윈 토토 만들기진술. 인덱스는 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데이터웨어 하우스의 사실 테이블에 대한 요약 테이블을 유지합니다.
pl/pgsql이벤트 윈 토토를 정의하는 데 사용할 수 있습니다.PostgreSQL이벤트 윈 토토로 호출되는 절차는 인수가없고 반환 유형의 함수로 선언되어야합니다event_trigger.
언제pl/pgsql함수를 이벤트 윈 토토라고하며, 여러 특수 변수가 최상위 블록에서 자동으로 생성됩니다. 그들은 :
데이터 유형텍스트; 윈 토토가 발사 된 이벤트를 나타내는 문자열.
데이터 유형텍스트; 윈 토토가 발사되는 명령 태그가 포함 된 변수.
예 40-7이벤트 윈 토토 프로 시저의 예를 표시pl/pgsql.