이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 39.7. 윈 토토 대 트리거버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

38.7. 규칙 대 트리거

트리거를 사용하여 수행 할 수있는 많은 것들이범퍼카 토토규칙 시스템. 규칙으로 구현할 수없는 것 중 하나아무것도열의 값이없는 경우

이 장에서는 규칙을 사용하여보기를 업데이트하는 데 중점을 두었습니다. 모두대신보기를 트리거합니다.

두 가지 모두에서 구현할 수있는 것들.

여기서 우리는 규칙의 선택과

테이블 컴퓨터 생성 (

두 테이블 모두 수천 개의 행이 있고 인덱스는hostname고유합니다. 규칙 또는소프트웨어삭제 된 참조

hostname = $ 1; 소프트웨어에서 삭제

트리거가 삭제 된 각 개별 행에 대해 트리거가 호출되므로컴퓨터, 계획을 준비하고 저장할 수 있습니다hostname매개 변수의 값. 규칙은 다음과 같이 작성됩니다.

컴퓨터로 삭제대로 Computer_del을 작성하십시오

이제 다른 유형의 삭제를 살펴 봅니다. A :의 경우

hostName = 'mypc.local.net'; computer에서 삭제

테이블컴퓨터인덱스에 의해 스캔됩니다

Computer.HostName = 'mypc.local.net'소프트웨어에서 삭제

적절한 인덱스 설정이 있으므로 플래너는 그렇습니다

NestLoop

다음 삭제와 함께 우리는 2000 년을 모두 제거하고 싶습니다.hostname시작old. 가능한 두 가지 명령이 있습니다

hostName> = 'old'인 컴퓨터에서 삭제

규칙에 의해 추가 된 명령은 다음과 같습니다.

Computer.HostName> = 'Old'및 Computer.HostName < '올레'소프트웨어에서 삭제

계획과 함께

해시 조인

다른 가능한 명령은 다음과 같습니다.

호스트 이름 ~ '^Old';의 컴퓨터에서 삭제

명령에 대한 다음 실행 계획을 초래합니다.

NestLoop

이것은 플래너가hostnamein컴퓨터인덱스에도 사용될 수 있습니다소프트웨어다수가있을 때and, 이것은 일반 표현에서하는 일입니다컴퓨터소프트웨어. 규칙소프트웨어규칙이 여전히 더 빠를 지 여부

우리가 보는 마지막 명령은 다음과 같습니다.

제조업체가있는 컴퓨터에서 삭제 = 'bim';

다시 많은 행이 삭제 될 수 있습니다컴퓨터. 그래서 트리거가 다시 실행됩니다

Computer.Manufacturer = 'BIM'소프트웨어에서 삭제

그 명령에 대한 계획은 다시 2 개 이상의 중첩 루프가 될 것입니다.컴퓨터:

NestLoop

이 경우 규칙 시스템의 추가 명령이 있습니다.

요약은 규칙이