사설 토토 작성 - 새 재 작성 사설 토토 정의
만들기 [또는 교체] 사설 토토 만들기이름
as이벤트
totable_name
[where조건
] [또한 | 대신] 아무것도 |명령
| (명령
;명령
...)여기서이벤트
중 하나 일 수 있습니다 :선택 | 삽입 | 업데이트 | 삭제
사설 토토 만들기
지정된 테이블 또는보기에 적용되는 새 사설 토토을 정의합니다.사설 토토 작성 또는 교체
새 규칙을 만들거나 같은 테이블에 대해 동일한 이름의 기존 규칙을 대체합니다.
thePostgreSQL규칙 시스템을 사용하면 데이터베이스 테이블에서 삽입, 업데이트 또는 삭제에 대해 대체 작업을 수행 할 수 있습니다. 대략적으로 말하면, 사설 토토은 주어진 테이블의 주어진 명령이 실행될 때 추가 명령을 실행하게합니다. 또는 an대신
규칙은 주어진 명령을 다른 명령으로 바꾸거나 명령을 전혀 실행하지 않도록 할 수 있습니다. 규칙은 SQL 뷰도 구현하는 데 사용됩니다. 규칙이 실제로 명령 변환 메커니즘이거나 명령 매크로라는 것을 인식하는 것이 중요합니다. 변환은 명령 실행이 시작되기 전에 발생합니다. 실제로 각 물리적 행에 대해 독립적으로 발사되는 작업을 원한다면 규칙이 아닌 트리거를 사용하고 싶을 것입니다. 규칙 시스템에 대한 자세한 정보는입니다.토토 캔 : 문서 : 17 : 39 장.
현재,ON SELECT
사설 토토은보기에만 첨부 될 수 있습니다. 그러한 사설 토토은 명명되어야합니다"_return"
, 무조건이어야합니다대신
사설 토토, 단일로 구성된 조치가 있어야합니다select
명령. 이 명령은보기의 가시 내용을 정의합니다. (보기 자체는 기본적으로 스토리지가없는 더미 테이블입니다.) 그러한 규칙을 구현 세부 사항으로 간주하는 것이 가장 좋습니다. 뷰는를 통해 재정의 할 수 있지만규칙을 만들거나 교체하거나 교체하십시오 "_return"as ...
, 사용하는 것이 더 나은 스타일입니다보기 만들거나 교체
.
정의하여 업데이트 가능한보기의 환상을 만들 수 있습니다insert
, 업데이트
및ON DELETE
뷰의 업데이트 작업을 다른 테이블의 적절한 업데이트로 대체하기위한 규칙 (또는 목적에 충분한 서브 세트). 지원하고 싶다면반환 삽입
그리고 그러면 적절한 것을 넣으십시오반환
각 사설 토토에 대한 조항.
복잡한보기 업데이트를 위해 조건부 규칙을 사용하려고하면 캐치가 있습니다.필수무조건적대신
보기에서 허용하려는 각 조치에 대해 규칙. 규칙이 조건부이거나 그렇지 않은 경우대신
, 시스템은 여전히 업데이트 작업을 수행하려는 시도를 거부합니다. 일부 경우 뷰의 더미 테이블에서 작업을 수행하려고 할 수 있다고 생각하기 때문입니다. 조건부 규칙으로 유용한 모든 사례를 처리하려면 무조건 추가대신 아무것도
규칙 시스템이 더미 테이블을 업데이트하기 위해 절대 요구되지 않을 것임을 이해하도록하십시오. 그런 다음 조건부 규칙을 비로 만드십시오.대신
; 적용되는 경우 기본값에 추가대신 아무것도
행동. (이 방법은 현재 지원하기 위해 작동하지 않습니다반환
쿼리.)
이름
생성 규칙의 이름. 이것은 같은 테이블에 대한 다른 규칙의 이름과 구별되어야합니다. 동일한 테이블 및 동일한 이벤트 유형에 대한 여러 규칙이 알파벳 순서로 적용됩니다.
이벤트
이벤트는 중 하나입니다.select
, 삽입
, 업데이트
또는삭제
. AN삽입
포함충돌
조항은 테이블에서 사용할 수 없습니다삽입
또는업데이트
규칙. 대신 업데이트 가능한보기를 고려하십시오.
table_name
테이블의 이름 (선택적으로 스키마 자격) 또는 규칙이 적용됩니다.
조건
anySQL조건부 표현식 (반환부울
). 조건 표현식은을 제외한 테이블을 참조 할 수 없습니다.NEW
andold
, 집계 함수를 포함 할 수 없습니다.
대신
대신
명령을 실행해야 함을 나타냅니다대신원래 명령.
또한
또한
명령이 실행되어야 함을 나타냅니다더 이상원래 명령.
그렇지 않은 경우또한
NOR대신
지정되어 있습니다.또한
기본값입니다.
명령
규칙 조치를 구성하는 명령 또는 명령. 유효한 명령은select
, 삽입
, 업데이트
, 삭제
또는알림
.
내조건
and명령
, 특별 테이블 이름NEW
andold
참조 표에서 값을 참조하는 데 사용될 수 있습니다.NEW
유효합니다insert
andon Update
삽입 또는 업데이트되는 새 행을 참조하는 규칙.old
유효합니다on update
andON DELETE
기존 행을 업데이트하거나 삭제하는 규칙.
당신은 사설 토토을 만들거나 변경하기 위해 테이블의 소유자 여야합니다.
사설 토토에 따라삽입
, 업데이트
또는삭제
보기에서 A를 추가 할 수 있습니다반환
보기의 열을 방출하는 조항. 이 조항은 사설 토토이 AN에 의해 트리거되면 출력을 계산하는 데 사용됩니다.리턴 삽입
, 업데이트 반환
또는반환 삭제
각각 명령. 규칙이 명령이없는 명령에 의해 트리거되는 경우반환
, 사설 토토반환
절은 무시됩니다. 현재 구현은 무조건적 인 경우대신
포함하는 규칙반환
; 또한 최대 하나가있을 수 있습니다반환
동일한 사건에 대한 모든 사설 토토 중 조항. (이것은 후보가 하나만 있음을 보장합니다반환
결과를 계산하는 데 사용되는 절입니다.)반환
보기의 쿼리는 없으면 거부됩니다반환
사용 가능한 사설 토토의 조항.
순환 규칙을 피하기 위해주의를 기울이는 것이 매우 중요합니다. 예를 들어, 다음 두 가지 규칙 정의는 각각에 의해 수락되지만postgresql, Theselect
명령은 원인이 될 것입니다PostgreSQL사설 토토의 재귀 확장으로 인해 오류를보고하려면 :
규칙 작성 "_return"as T1까지 선택하십시오 대신하십시오 선택 *에서 t2에서; 규칙 "_return"을 작성하십시오 T2로 선택하십시오 대신하십시오 선택 *에서 *; 선택 *에서 t1;
현재, 사설 토토 조치에 A가 포함 된 경우Notify
명령,Notify
명령은 무조건 실행됩니다. 즉,Notify
사설 토토에 적용 해야하는 행이 없어도 발행됩니다. 예를 들어 :
mytable에 대한 업데이트시대로 규칙을 작성하십시오. mytable set name = 'foo'여기서 id = 42; 업데이트
ONENotify
이벤트는 동안 발송됩니다.업데이트
, 조건과 일치하는 행이 있는지 여부id = 42
. 이것은 향후 릴리스에서 수정 될 수있는 구현 제한입니다.
사설 토토 만들기
isPostgreSQL언어 확장, 전체 쿼리 재 작성 시스템과 마찬가지로
문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면