이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 스포츠 토토 베트맨 작성버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

윈 토토 생성

이름

CREATE RULE -- 새 재작성 윈 토토 정의

시놉시스

윈 토토 생성 [ 또는 교체 ]이름AS ON이벤트받는 사람테이블_이름[ 어디에서조건]
    하세요 [ 또한 | 대신 ]  아무것도 |명령 | ( 명령 ; 명령 ... ) }

어디에서이벤트다음 중 하나일 수 있습니다.선택 | 삽입 | 업데이트 | 삭제

설명

윈 토토 생성지정된 테이블이나 뷰에 적용되는 새 윈 토토을 정의합니다.윈 토토 생성 또는 교체새 규칙을 생성하거나 동일한 테이블에 대해 동일한 이름의 기존 규칙을 대체합니다.

포스트그레SQL규칙 시스템을 사용하면 데이터베이스 테이블의 삽입, 업데이트 또는 삭제 시 수행할 대체 작업을 정의할 수 있습니다. 대략적으로 말하면 규칙은 특정 테이블에서 특정 명령이 실행될 때 추가 명령이 실행되도록 합니다. 또는,대신규칙은 주어진 명령을 다른 명령으로 바꾸거나 명령이 전혀 실행되지 않게 할 수 있습니다. 규칙은 SQL 보기를 구현하는 데에도 사용됩니다. 규칙은 실제로 명령 변환 메커니즘 또는 명령 매크로라는 점을 인식하는 것이 중요합니다. 변환은 명령 실행이 시작되기 전에 발생합니다. 실제로 각 물리적 행에 대해 독립적으로 실행되는 작업을 원하는 경우 규칙이 아닌 트리거를 사용하는 것이 좋습니다. 규칙 시스템에 대한 자세한 내용은 다음을 참조하세요.PostgreSQL : 문서 : 9.6 : 토토 시스템.

현재,ON 선택규칙은 무조건적이어야 합니다대신윈 토토이며 단일로 구성된 작업이 있어야 합니다.선택명령. 따라서,선택 중rule은 테이블을 뷰로 효과적으로 변환합니다. 이 뷰의 표시되는 콘텐츠는 윈 토토에서 반환된 행입니다.선택12679_12796보기 만들기실제 테이블을 생성하고 정의하는 명령ON 선택윈 토토을 따르세요.

정의하여 업데이트 가능한 보기의 환상을 만들 수 있습니다.삽입 중, 업데이트 중삭제 중규칙(또는 목적에 맞는 규칙의 하위 집합)을 사용하여 뷰의 업데이트 작업을 다른 테이블의 적절한 업데이트로 대체합니다. 지원하고 싶다면반환 삽입등등, 적절한 값을 입력하세요.돌아오는 중이러한 각 윈 토토에 조항을 추가하세요.

복잡한 보기 업데이트에 조건부 규칙을 사용하려고 하면 문제가 발생합니다. 거기반드시무조건적이 되세요대신13621_13714대신, 그러면 시스템은 업데이트 작업을 수행하려는 시도를 거부합니다. 왜냐하면 어떤 경우에는 뷰의 더미 테이블에서 작업을 수행하려고 시도하게 될 수도 있다고 생각하기 때문입니다. 조건부 규칙에서 유용한 사례를 모두 처리하려면 unconditional을 추가하세요.대신 아무것도 하지 마세요규칙은 더미 테이블을 업데이트하기 위해 호출되지 않는다는 것을 시스템이 이해하도록 보장합니다. 그런 다음 조건부 규칙을 비로 만듭니다.대신; 적용되는 경우 기본값에 추가됩니다.아무것도 대신하지 마세요행동. (이 방법은 현재 지원되지 않습니다.돌아오는 중그러나 쿼리합니다.)

참고:자동으로 업데이트할 수 있을 만큼 간단한 보기(참조PostgreSQL : 문서 : 9.6 :롤 토토 만들기)은 업데이트하기 위해 사용자가 만든 윈 토토이 필요하지 않습니다. 어쨌든 명시적인 윈 토토을 만들 수는 있지만 자동 업데이트 변환은 일반적으로 명시적인 윈 토토보다 성능이 뛰어납니다.

고려해볼 만한 또 다른 대안은 다음을 사용하는 것입니다.대신트리거(참조PostgreSQL : 문서 : 9.6 : 사설 토토 사이트 생성) 규칙 대신

매개변수

이름

생성할 규칙의 이름. 이는 동일한 테이블에 대한 다른 규칙의 이름과 구별되어야 합니다. 동일한 테이블, 동일한 이벤트 유형에 대한 여러 규칙이 알파벳 이름 순서로 적용됩니다.

이벤트

이벤트는 다음 중 하나입니다.선택, 삽입, 업데이트또는삭제. 참고하세요.삽입다음을 포함함충돌 중절은 다음 중 하나를 갖는 테이블에서 사용할 수 없습니다.삽입또는업데이트규칙. 대신 업데이트 가능한 뷰를 사용해 보세요.

테이블_이름

규칙이 적용되는 테이블 또는 보기의 이름(선택적으로 스키마 한정).

조건

모두SQL조건식(반환부울). 조건 표현식은 다음을 제외한 어떤 테이블도 참조할 수 없습니다.신규그리고오래된, 집계 함수를 포함할 수 없습니다.

대신

대신명령이 실행되어야 함을 나타냅니다.대신원래 명령입니다.

또한

또한명령이 실행되어야 함을 나타냅니다.추가로원래 명령입니다.

둘 다 아니라면또한아니요대신지정되었습니다.또한기본값입니다.

명령

규칙 작업을 구성하는 명령 또는 명령들. 유효한 명령은 다음과 같습니다.선택, 삽입, 업데이트, 삭제또는알림.

내부조건그리고명령, 특수 테이블 이름신규그리고오래된참조된 테이블의 값을 참조하는 데 사용할 수 있습니다.신규다음에서 유효합니다.삽입 중그리고업데이트 중삽입되거나 업데이트되는 새 행을 참조하는 규칙.오래된다음에서 유효합니다.업데이트 중그리고삭제 중업데이트되거나 삭제되는 기존 행을 참조하는 규칙.

참고

테이블에 대한 윈 토토을 생성하거나 변경하려면 테이블의 소유자여야 합니다.

다음에 대한 규칙에서삽입, 업데이트또는삭제보기에 다음을 추가할 수 있습니다.돌아오는 중뷰의 열을 내보내는 절입니다. 이 절은 규칙이 다음에 의해 트리거되는 경우 출력을 계산하는 데 사용됩니다.반환 삽입, 업데이트 반환 중, 또는복귀 삭제각각 명령을 실행합니다. 규칙이 없는 명령에 의해 트리거되는 경우돌아오는 중, 윈 토토의돌아오는 중절은 무시됩니다. 현재 구현에서는 무조건만 허용합니다.대신포함할 윈 토토돌아오는 중; 또한 최대 하나가 있을 수 있습니다.돌아오는 중18807_18904돌아오는 중결과를 계산하는 데 사용되는 절입니다.)돌아오는 중뷰에 대한 쿼리가 없으면 거부됩니다.돌아오는 중사용 가능한 모든 윈 토토의 절.

순환 규칙을 피하도록 주의하는 것이 매우 중요합니다. 예를 들어, 다음 두 규칙 정의는 각각 다음에서 허용됩니다.포스트그레SQL, 그선택명령으로 인해 발생함포스트그레SQL윈 토토의 반복적 확장으로 인해 오류를 보고하려면:

다음과 같이 "_RETURN" 윈 토토 생성
    t1을 선택하면
    대신에
        SELECT * FROM t2;

다음과 같이 "_RETURN" 윈 토토 생성
    t2로 선택
    대신에
        SELECT * FROM t1;

t1에서 * 선택;

현재 규칙 작업에 다음이 포함되어 있는 경우알림명령, 그알림명령은 무조건 실행됩니다. 즉,알림규칙을 적용해야 하는 행이 없더라도 발행됩니다. 예를 들어, 다음과 같습니다:

mytable 업데이트 시에 inform_me 규칙을 작성하세요. mytable에도 알리세요.

UPDATE mytable SET 이름 = 'foo' WHERE id = 42;

하나알림이벤트가 다음 기간 동안 전송됩니다.업데이트, 조건과 일치하는 행이 있는지 여부id = 42. 이는 향후 릴리스에서 수정될 수 있는 구현 제한 사항입니다.

호환성

윈 토토 생성PostgreSQL언어 확장, 전체 쿼리 재작성 시스템도 마찬가지입니다.