이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 스포츠 토토 베트맨 작성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

생성 젠 토토

이름

젠 토토 작성-새 재 작성 젠 토토 정의

시놉시스

만들기 [또는 교체] 젠 토토 만들기이름as이벤트totable_name[where조건]
    [또한 | 대신] 아무것도 |명령| (명령;명령...)

설명

젠 토토 만들기새 젠 토토을 정의합니다 지정된 테이블 또는보기에.생성 또는 교체 젠 토토새 규칙을 만들거나 기존을 교체합니다. 같은 테이블의 동일한 이름의 규칙.

thePostgreSQL규칙 시스템 수행 할 대체 조치를 정의 할 수 있습니다. 데이터베이스 테이블의 삽입, 업데이트 또는 삭제. 대충 말하자면, 젠 토토은 추가 명령이 주어진 테이블에 주어진 명령이 실행됩니다. 또는 an대신규칙은 주어진 명령을 대체 할 수 있습니다 다른 사람에 의해, 또는 명령을 전혀 실행하지 않도록합니다. 규칙이 있습니다 SQL 뷰도 구현하는 데 사용됩니다. 실현하는 것이 중요합니다 규칙은 실제로 명령 변환 메커니즘이거나 명령 매크로. 변환은 실행 전에 발생합니다 명령이 시작됩니다. 실제로 해고하는 작업을 원한다면 각 물리적 행에 대해 독립적으로 사용하고 싶을 것입니다. 규칙이 아닙니다. 규칙 시스템에 대한 자세한 정보는입니다.PostgreSQL : 문서 : 9.3 : 사설 토토 시스템.

현재,ON SELECT규칙이 있어야합니다 무조건대신젠 토토과 있어야합니다 단일로 구성된 행동select명령. 따라서, anON SELECT젠 토토 효과적으로 테이블을 볼로 바꾸고 눈에 보이는 내용이 젠 토토에 의해 반환 된 행select테이블에 저장된 것이 아니라 명령 (if 아무것). 글을 쓰는 것이 더 나은 스타일로 간주됩니다보기 만들기실제 테이블을 만드는 것보다 명령 정의ON SELECT젠 토토에 대한 젠 토토.

정의하여 업데이트 가능한보기의 환상을 만들 수 있습니다insert, on 업데이트ON DELETE젠 토토 (또는 다른 당신의 목적에 충분한 사람들의 하위 집합) 교체하기에 기타에 대한 적절한 업데이트로보기에서 조치 업데이트 테이블. 지원하고 싶다면삽입 반환그리고 그러면 적절한 것을 넣으십시오반환각 젠 토토에 대한 조항.

단지에 조건부 규칙을 사용하려고한다면 캐치가 있습니다. 업데이트보기 : 거기필수무조건적대신각각에 대한 규칙 당신이보기에서 허용하고 싶은 행동. 규칙이 조건부 인 경우 또는대신, 그러면 시스템이 될 것입니다 여전히 업데이트 작업을 수행하려는 시도를 거부합니다. 더미에서 행동을 수행하려고 노력할 수 있다고 생각합니다. 경우에 따라보기의 표. 당신이 모든 것을 처리하고 싶다면 조건부 규칙의 유용한 사례, 무조건 추가대신 아무것도시스템을 보장하기 위해 규칙 더미 테이블을 업데이트하기 위해 절대 요구되지 않는다는 것을 이해합니다. 그런 다음 조건부 규칙을 비로 만드십시오.대신; 그들이 적용되는 경우, 그들은 기본값에 추가대신 아무것도행동. (이 방법은 현재 지원하기 위해 작동하지 않습니다반환쿼리.)

참고 :자동으로 충분히 간단한보기 업데이트 가능 (참조PostgreSQL : 문서 : 9.3 :스포츠 토토 사이트 만들기) 업데이트하기 위해 사용자가 제작 한 젠 토토이 필요하지 않습니다. 당신은 어쨌든 자동 업데이트 인 명백한 젠 토토을 만들 수 있습니다 변환은 일반적으로 명시적인 젠 토토을 능가합니다.

사용하는 또 다른 대안은 사용하는 것입니다대신트리거 (참조트리거 만들기) 규칙 대신.

매개 변수

이름

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

이벤트

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

table_name

테이블의 이름 (선택적으로 스키마 자격) 또는보기 규칙이 적용됩니다.

조건

anySQL조건부 표현 (반환부울). 조건 표현식은을 제외한 테이블을 참조 할 수 없습니다.NEWandold집계 함수를 포함합니다.

대신

대신명령을 나타냅니다 실행해야합니다대신 의원래 명령.

또한

또한명령이 있어야 함을 나타냅니다 실행또한 에게원래 명령.

그렇지 않은 경우또한NOR대신지정되어 있습니다.또한기본값입니다.

명령

규칙 조치를 구성하는 명령 또는 명령. 유효한 명령은select, 삽입, 업데이트, 삭제또는Notify.

조건and명령, 특별 테이블 이름NEWandold익숙해 질 수 있습니다 참조 테이블의 값을 참조하십시오.NEWinsertandon Update새로운 것을 참조하는 규칙 삽입 또는 업데이트중인 행.oldis 유효on updateandON DELETE기존 행을 참조하는 규칙 업데이트 또는 삭제.

노트

당신은 젠 토토을 만들거나 변경하기위한 테이블의 소유자 여야합니다. 그것.

젠 토토에 따라삽입, 업데이트또는삭제a 보기, 당신은 a를 추가 할 수 있습니다.반환조항 보기 열을 방출합니다. 이 조항은 다음을 계산하는 데 사용됩니다 젠 토토이 an에 의해 트리거되는 경우 출력삽입 반환, 업데이트 반환또는반환 삭제각각 명령. 규칙이 명령이없는 명령에 의해 트리거되는 경우반환, 젠 토토반환절은 무시됩니다. 전류 구현은 무조건 만 허용대신포함하는 젠 토토반환; 또한 최대 하나가있을 수 있습니다반환모든 규칙 중 조항 같은 이벤트. (이것은 후보가 하나만 있음을 보장합니다반환조항을 계산하는 데 사용됩니다 결과.)반환보기에 쿼리 없으면 거부됩니다반환가용 젠 토토의 조항.

순환 젠 토토을 피하기 위해주의를 기울이는 것이 매우 중요합니다. 을 위한 예를 들어 다음 두 가지 젠 토토 정의는 각각이지만 수락PostgreSQL,select명령은 원인이 될 것입니다PostgreSQL때문에 오류를보고합니다 젠 토토의 재귀 확장 :

규칙 작성 "_return"as
    T1까지 선택하십시오
    대신하십시오
        선택 *에서 t2에서;

규칙 "_return"을 작성하십시오
    T2로 선택하십시오
    대신하십시오
        선택 *에서 *;

선택 *에서 t1;

현재, 젠 토토 조치에 A가 포함 된 경우Notify명령,Notify명령은 무조건적으로 실행됩니다. 즉,Notify행이 없어도 발행됩니다. 젠 토토이 적용되어야합니다. 예를 들어 :

mytable에 대한 업데이트와 같이 규칙을 작성하십시오.

mytable set name = 'foo'여기서 id = 42; 업데이트

ONENotify이벤트가 전송됩니다 그만큼업데이트조건과 일치하는 행id = 42. 이것은 향후 수정 될 수있는 구현 제한입니다. 릴리스.

호환성

젠 토토 만들기ispostgresql언어 확장과 마찬가지로 전체 쿼리 재 작성 시스템.