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

만들기 젠 토토

이름

CREATE RULE  --  새로운 재작성 젠 토토 정의

시놉시스

젠 토토 생성 [ 또는 교체 ]이름AS ON이벤트받는 사람테이블[ 어디에서조건]
    [ 대신 ]을 하세요액션어디에서액션다음이 될 수 있습니다:

아무것도
|질의
| ( 질의 ; 질의 ... )

입력

이름

생성할 규칙의 이름입니다. 이는 구별되어야 합니다. 동일한 테이블에 대한 다른 규칙의 이름에서 가져온 것입니다.

이벤트

이벤트는 다음 중 하나입니다.선택, 업데이트, 삭제또는삽입.

테이블

테이블의 이름(선택적으로 스키마 한정) 또는 규칙이 적용되는 항목을 확인하세요.

조건

모든 SQL 조건식(반환부울). 조건 표현식은 다음과 같을 수 없습니다. 다음을 제외한 모든 표를 참조하세요.신규그리고오래된이며 다음을 포함할 수 없습니다. 집계 함수.

질의

쿼리를 구성하는 쿼리액션어떤 SQL이든 가능선택, 삽입, 업데이트, 삭제또는알림진술.

내부조건그리고액션, 특수 테이블 이름신규그리고오래된참조된 테이블의 값을 참조하는 데 사용될 수 있습니다.신규ON INSERT 및 ON에서 유효합니다. 삽입되거나 업데이트되는 새 행을 참조하는 UPDATE 규칙입니다.오래된ON UPDATE 및 ON에서 유효합니다. 업데이트 중인 기존 행을 참조하는 DELETE 규칙 또는 삭제되었습니다.

출력

젠 토토 생성

젠 토토이 성공적으로 완료되면 메시지가 반환됩니다. 생성되었습니다.

설명

젠 토토 생성새 규칙을 정의합니다 지정된 테이블이나 뷰에 적용됩니다.만들기 또는 규칙을 교체하세요.새 규칙을 생성하거나 동일한 테이블에 대한 동일한 이름의 기존 규칙입니다.

PostgreSQL 젠 토토 시스템대안을 정의할 수 있습니다. 삽입, 업데이트, 삭제 시 수행할 작업 데이터베이스 테이블. 규칙은 테이블 뷰를 다음과 같이 구현하는 데 사용됩니다. 음.

규칙의 의미는 당시 개인이 인스턴스(행)에 액세스, 삽입, 업데이트 또는 삭제된 경우 이전 인스턴스(선택, 업데이트 및 삭제용)이고 새 인스턴스입니다. 인스턴스(삽입 및 업데이트용). 주어진 모든 규칙 이벤트 유형과 지정된 대상 테이블이 연속적으로 검사됩니다. (이름순으로). 만약조건WHERE 절에 지정됨(경우 any)는 사실입니다.액션일부 젠 토토이 실행됩니다.액션14758_14988조건그리고액션, 이전 필드의 값 인스턴스 및/또는 새 인스턴스가 대체됩니다.오래된.속성-이름그리고새로운.속성-이름.

액션규칙의 일부 하나 이상의 쿼리로 구성될 수 있습니다. 여러 쿼리를 작성하려면 괄호로 묶으십시오. 이러한 쿼리는 다음에서 수행됩니다. 지정된 순서.액션또한 작업이 없음을 나타내는 NOTHING일 수도 있습니다. 따라서 DO INSTEAD NOTHING 규칙은 원래 쿼리의 실행을 억제합니다( 해당 조건은 true입니다.) DO NOTHING 규칙은 쓸모가 없습니다.

액션젠 토토의 일부 동일한 명령 및 트랜잭션 식별자를 사용하여 실행됩니다. 활성화를 유발한 사용자 명령입니다.

규칙이 실제로는 쿼리라는 점을 인식하는 것이 중요합니다 변환 메커니즘 또는 쿼리 매크로. 전체 쿼리는 이를 포함하는 일련의 쿼리로 변환하도록 처리됩니다. 규칙 작업. 이는 쿼리 평가가 시작되기 전에 발생합니다. 따라서 조건부 규칙은 규칙 조건을 추가하여 처리됩니다. 규칙에서 파생된 작업의 WHERE 절입니다. 는 위에서 실행되는 작업으로서의 규칙에 대한 설명은 다음과 같습니다. 따라서 각 행은 다소 오해의 소지가 있습니다. 실제로 원하는 경우 각 물리적 행에 대해 독립적으로 실행되는 작업 아마도 규칙이 아닌 트리거를 사용하고 싶을 것입니다. 규칙이 가장 유용함 전체 쿼리 변환이 필요한 상황의 경우 처리되는 특정 데이터와 관계없이.

젠 토토 및 보기

현재 ON SELECT 규칙은 무조건 INSTEAD여야 합니다. 규칙이 있으며 단일 SELECT로 구성된 작업이 있어야 합니다. 쿼리. 따라서 ON SELECT 규칙은 테이블을 효과적으로 다음으로 바꿉니다. 표시되는 내용이 반환된 행인 뷰 규칙의 SELECT 쿼리에 저장된 내용이 아닌 테이블(있는 경우). 글을 쓰는 것이 더 나은 스타일로 간주됩니다. CREATE VIEW 명령은 실제 테이블을 생성하고 정의하는 것보다 ON SELECT 규칙입니다.

PostgreSQL : 문서 : 7.3 :토토 캔 만들기기본 저장소 없이 더미 테이블을 생성하고 ON SELECT 규칙을 그것과 연결합니다. 시스템이 허용하지 않습니다 실제 테이블이 없다는 것을 알기 때문에 뷰 업데이트 거기. 업데이트 가능한 보기의 환상을 만들 수 있습니다. ON INSERT, ON UPDATE 및 ON DELETE 규칙 정의(또는 임의의 귀하의 목적에 충분한 것의 하위 집합)을 교체하십시오. 다른 항목의 적절한 업데이트로 보기의 작업 업데이트 테이블.

조건부 규칙을 사용하려고 하면 문제가 발생합니다. 업데이트 보기: 거기반드시무조건적인 대신에 행동하십시오 뷰에서 허용하려는 각 작업에 대한 규칙입니다. 규칙이라면 조건부이거나 INSTEAD가 아닌 경우 시스템은 계속 작동합니다. 업데이트 작업을 수행하려는 시도를 거부합니다. 더미 테이블에서 작업을 수행하려고 시도하게 될 수도 있습니다. 어떤 경우에는. 유용한 사례를 모두 처리하고 싶다면 조건부 규칙을 사용할 수 있습니다. 그냥 무조건 DO만 추가하세요 시스템이 이를 이해할 수 있도록 INSTEAD NOTHING 규칙 더미 테이블을 업데이트하기 위해 호출되지 않습니다. 그런 다음 INSTEAD가 아닌 조건부 규칙; 그들이 있는 경우에는 실행하면 기본 INSTEAD NOTHING 작업에 추가됩니다.

참고

다음을 수행하려면 테이블에 대한 규칙 정의 액세스 권한이 있어야 합니다. 그것에 대한 규칙을 정의하십시오. 사용그랜트그리고취소권한을 변경합니다.

순환 규칙을 피하도록 주의하는 것이 매우 중요합니다. 예를 들어, 다음 두 규칙 정의는 각각 에 의해 승인됨PostgreSQL, 선택 명령으로 인해 발생합니다PostgreSQL오류를 보고합니다. 왜냐하면 쿼리가 너무 많이 순환되었습니다.

다음과 같이 "_RETURN" 젠 토토 생성
    Emp로 선택
    대신에 
        SELECT * FROM toyemp;

다음과 같이 "_RETURN" 젠 토토 생성
    ON 선택 TOyemp
    대신에 
        SELECT * FROM emp;

다음에서 선택하려는 시도EMP원인이 될 것입니다PostgreSQL발행하다 쿼리가 너무 많이 순환되었기 때문에 오류가 발생했습니다.

SELECT * FROM emp;

현재 규칙에 NOTIFY 쿼리가 포함된 경우 NOTIFY 무조건 실행됩니다. 즉, NOTIFY는 규칙이 적용해야 하는 행이 없는 경우에도 발행됩니다. 에 적용됩니다. 예를 들어,

mytable 업데이트 시에 inform_me 젠 토토 생성 DO NOTIFY mytable;

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

업데이트 중에 하나의 NOTIFY 이벤트가 전송됩니다. ID = 42인 행이 없습니다. 이는 구현입니다. 향후 릴리스에서 수정될 수 있는 제한 사항입니다.

호환성

SQL92

젠 토토 생성PostgreSQL언어 확장. 없습니다젠 토토 생성문의 내용SQL92.