Postgresql 9.2.24 문서화 | ||||
---|---|---|---|---|
503 토토 사이트 페치 실패 | up | 제 36 장. 배트맨 토토 | 토토 꽁 머니 : 문서 : 9.2 : 데이터 변경의 가시성 |
배트맨 토토는 데이터베이스가 해야하는 사양입니다 특정 기능이 특정 기능을 자동으로 실행합니다 작동 유형이 수행됩니다. 배트맨 토토를 둘 다 부착 할 수 있습니다 테이블과 뷰.
테이블에서 배트맨 토토를 정의하여 이전 또는 그 후삽입, 업데이트또는삭제작동, 수정 된 행당 한 번 또는 당시 한 번SQL진술.업데이트배트맨 토토는 더욱 발사되도록 설정할 수 있습니다 특정 열이에 언급 된 경우set절의 조항업데이트진술. 배트맨 토토는 또한 발사 할 수 있습니다Truncate진술. 배트맨 토토 이벤트가 발생하면 방아쇠의 기능은 적절한 시간에 호출됩니다. 이벤트 처리.
보기에서 배트맨 토토는 대신 실행하도록 정의 할 수 있습니다삽입, 업데이트, 또는삭제운영.대신배트맨 토토는 각 행마다 한 번 시작됩니다 보기에서 수정해야합니다. 그것은 책임입니다 필요한 수정을 수행하는 배트맨 토토 기능 중 기본 기본 테이블에, 적절한 경우 보기에 나타날 수정 된 행. 시야를 배트맨 토토 할 수 있습니다 또한 한 번씩 한 번 실행하도록 정의됩니다SQL명령문, 전후에삽입, 업데이트또는삭제운영.
배트맨 토토 함수는 배트맨 토토 자체 전에 정의되어야합니다. 만들 수 있습니다. 배트맨 토토 함수는 a로 선언해야합니다 인수가없고 유형을 반환하지 않는 기능배트맨 토토. (배트맨 토토 함수는 입력을 수신합니다 특별한 통과를 통해TriggerData구조, 형태가 아닙니다 일반 기능 인수.)
적절한 배트맨 토토 함수가 생성되면 배트맨 토토 로 설립되었습니다.생성 방아쇠. 동일한 배트맨 토토 기능을 다중에 사용할 수 있습니다 배트맨 토토.
postgresql제공per-row배트맨 토토 및진술 당배트맨 토토. 당직 방향 배트맨 토토와 함께 배트맨 토토 함수는 각 행에 대해 한 번 호출됩니다. 방아쇠를 해고 한 진술의 영향을받습니다. 대조적으로, a 적절한 경우 진술 당 배트맨 토토는 한 번만 호출됩니다 영향을받는 행 수에 관계없이 진술이 실행됩니다. 그 진술에 의해. 특히, 0에 영향을 미치는 진술 행은 여전히 해당 해당의 실행을 초래합니다. 진술 당 배트맨 토토. 이 두 가지 유형의 배트맨 토토는 때때로입니다 라고 불리는로드 레벨배트맨 토토 및성명서 수준배트맨 토토. 배트맨 토토 에Truncate진술 수준. 전망에서 5 월 또는 후에 발사하는 배트맨 토토 진술 수준에서만 정의되며, 그 불을 피우는 반면 대신삽입, 업데이트또는삭제5 월 행 수준에서만 정의됩니다.
배트맨 토토는 또한 화재 여부에 따라 분류됩니다전, 이후, 또는대신작업. 이것들입니다 라고 함전배트맨 토토,이후배트맨 토토 및대신배트맨 토토. 진술 수준전이전에 자연스럽게 발사됩니다 진술은 무엇이든 시작하고 진술 수준이후바로 끝에서 발사를 유발합니다 진술. 이러한 유형의 배트맨 토토는 테이블에서 정의 될 수 있습니다 또는보기. 줄 수준전발사를 배트맨 토토합니다 특정 행이 작동하기 직전에 줄 수준이후끝에 불을 방지합니다 진술의 (그러나 어떤 진술 수준 이전이후배트맨 토토). 이러한 유형의 배트맨 토토는 만 가능합니다 테이블에 정의됩니다. 줄 수준대신 의배트맨 토토는보기와 화재에만 정의 될 수 있습니다 뷰의 각 행이 필요로 식별되면 즉시 운영됩니다.
진술 당 배트맨 토토로 호출 된 배트맨 토토 함수 항상 반환NULL. 배트맨 토토 기능 당면 배트맨 토토로 호출하면 테이블 행 (값의 값 유형heappuple) 호출 그들이 선택한 경우 집행자. 행 앞에서 발사 된 행 수준 배트맨 토토 운영에는 다음과 같은 선택이 있습니다.
반환 할 수 있습니다NULL현재 행 작동. 이것은 집행자에게 지시합니다 배트맨 토토를 호출 한로드 레벨 작업을 수행하지 마십시오 (특정의 삽입, 수정 또는 삭제 테이블 행).
Row-Level의 경우삽입and업데이트배트맨 토토 전용, 반환 행은 삽입 될 행이되거나 교체 할 행이됩니다. 행이 업데이트 중입니다. 이를 통해 배트맨 토토 기능이 수정 될 수 있습니다 행이 삽입되거나 업데이트됩니다.
행 수준전배트맨 토토 이러한 행동 중 하나를 유발하지 않으려는 것은 결과적으로 통과 된 동일한 행을 결과적으로 반환합니다 (즉, 그만큼NEW행삽입및업데이트배트맨 토토,old행삭제배트맨 토토).
행 수준대신배트맨 토토해야합니다 둘 다 반환nullView의 기본 기본 테이블에서 데이터를 수정하지 않았습니다. 또는 통과 된 뷰 행을 반환해야합니다 (NEW행삽입and업데이트운영 또는old행삭제운영). unnull 리턴 값은 배트맨 토토가 필요한 것을 수행했음을 알리는 데 사용됩니다. 보기의 데이터 수정. 이로 인해 수의 수가 발생합니다 명령에 의해 영향을받는 줄의 수. 을 위한삽입and업데이트운영, 배트맨 토토가 수정할 수 있습니다NEW반환하기 전에 행. 이것은 할 것입니다 에 의해 반환 된 데이터 변경삽입 반환또는업데이트 반환및 보기가 정확히 동일한 데이터를 표시하지 않을 때 유용합니다. 제공되었습니다.
이후에 해고 된로드 레벨 배트맨 토토에 대해 반환 값이 무시됩니다. 작전, 그래서 그들은 반환 할 수 있습니다null.
동일한 이벤트에 대해 둘 이상의 배트맨 토토가 정의 된 경우 동일한 관계, 배트맨 토토는 알파벳 순서로 발사됩니다. 배트맨 토토 이름으로. 의 경우전and대신배트맨 토토, the 각 배트맨 토토에 의해 반환 된 수정 행은 입력이됩니다 다음 방아쇠에.전또는대신배트맨 토토 리턴NULL, 해당 행에 작업이 버려집니다 후속 배트맨 토토가 발사되지 않았습니다 (해당 행의 경우)
배트맨 토토 정의는 부울을 지정할 수 있습니다언제조건 방아쇠를 발사 해야하는지 여부. 로드 레벨에서 배트맨 토토언제조건은 오래된 것을 검사 할 수 있습니다 및/또는 행 열의 새로운 값. (진술 수준 배트맨 토토도 가질 수 있습니다언제조건, 기능은 그들에게 그렇게 유용하지는 않지만.)에서전배트맨 토토,언제조건은 함수가되기 직전에 평가됩니다. 실행 됨, 사용언제그렇지 않습니다 동일한 조건을 테스트하는 것과 실질적으로 다릅니다 배트맨 토토 함수의 시작. 그러나에서이후배트맨 토토,언제조건은 행 업데이트가 발생한 직후에 평가됩니다. 이벤트가 성명서의 끝. 그래서이후Trigger 's언제조건이 반환되지 않습니다 사실, 이벤트를 대기하거나 다시 가져올 필요는 없습니다. 성명서 끝에서 행. 이것은 상당한 속도를 초래할 수 있습니다 배트맨 토토가 필요로하는 경우 많은 행을 수정하는 진술에서 몇 줄에 대해 발사됩니다.대신 의배트맨 토토는 지원하지 않습니다when조건
일반적으로,로드 레벨전배트맨 토토 삽입 될 데이터를 확인하거나 수정하는 데 사용됩니다. 또는 업데이트. 예를 들어, A전배트맨 토토는 현재 시간을 A에 삽입하는 데 사용될 수 있습니다타임 스탬프열 또는 두 개를 확인하십시오 행의 요소는 일관성이 있습니다. 줄 수준이후배트맨 토토는 전파에 가장 현명하게 사용됩니다 다른 테이블에 대한 업데이트 또는 일관성 검사 다른 테이블. 이 노동 분업의 이유는 때문입니다.이후배트맨 토토가 확실 할 수 있습니다 행의 최종 값을보고, A전배트맨 토토는 할 수 없습니다. 다른 것이있을 수 있습니다전그 후 발사를 방지합니다. 당신이 방아쇠를 만들어야 할 특정 이유가 없습니다전또는이후, The전케이스는 더 효율적입니다 작업에 대한 정보는 진술의 끝.
배트맨 토토 함수가 SQL 명령을 실행하면 이들은 이들입니다 명령은 다시 배트맨 토토를 발사 할 수 있습니다. 이것은 계단식이라고합니다 배트맨 토토. 캐스케이드 수에 직접 제한이 없습니다. 레벨. 캐스케이드가 재귀를 유발할 수 있습니다 동일한 트리거의 호출; 예를 들어, an삽입배트맨 토토는 그 명령을 실행할 수 있습니다 추가 행을 동일한 테이블에 삽입하여를 유발합니다.삽입다시 해고 될 배트맨 토토. 그것은 무한을 피할 수있는 배트맨 토토 프로그래머의 책임 그러한 시나리오에서의 재귀.
배트맨 토토가 정의되면 인수를 지정할 수 있습니다. 그것을 위해. 배트맨 토토에 인수를 포함시키는 목적 정의는 비슷한 배트맨 토토를 허용하는 것입니다 동일한 기능을 호출해야합니다. 예를 들어, 거기 일반화 된 배트맨 토토 기능이 될 수 있습니다. 인수 두 열 이름과 현재 사용자를 하나로 넣고 다른 타임 스탬프. 올바르게 작성되었습니다 배트맨 토토 기능은 특정 테이블과 무관합니다. 배트맨 토토링. 따라서 동일한 기능이 사용될 수 있습니다.삽입적절한 열이있는 테이블의 이벤트, 트랜잭션 테이블에서 레코드 생성을 자동으로 추적하려면 예를 들어. 또한 마지막 업데이트 이벤트를 추적하는 데 사용될 수 있습니다. 로 정의업데이트배트맨 토토.
배트맨 토토를 지원하는 각 프로그래밍 언어에는 자체가 있습니다 배트맨 토토 입력 데이터를 배트맨 토토에 사용할 수 있도록하는 방법 기능. 이 입력 데이터에는 배트맨 토토 이벤트 유형이 포함됩니다 (예 :삽입또는업데이트) 및 나열된 인수 안에배트맨 토토 생성. 줄 수준의 경우 배트맨 토토, 입력 데이터에도가 포함됩니다.NEW행삽입및업데이트배트맨 토토 및/또는old행업데이트및삭제배트맨 토토. 진술 수준 배트맨 토토는 현재 개인을 검사 할 방법이 없습니다. 문에 의해 수정 된 행 (s).