만들기 [또는 교체] 젠 토토 만들기이름as이벤트to테이블[where조건] [대신]Action여기서Action아무것도 아님 |쿼리| (쿼리;쿼리...)
만들기 규칙의 이름. 이것은 뚜렷해야합니다 같은 테이블에 대한 다른 규칙의 이름에서.
이벤트는 중 하나입니다.select, 업데이트, 삭제또는삽입.
테이블의 이름 (선택적으로 스키마 자격) 적용되는 규칙보기.
모든 SQL 조건부 표현식 (반환부울). 조건 표현은 그렇지 않을 수 있습니다 을 제외한 모든 테이블을 참조하십시오.NEWandold집계 기능.
쿼리 또는 쿼리가ActionSQL이 될 수 있습니다select, 삽입, 업데이트, 삭제또는Notify진술.
내에서조건andAction, 특별 테이블 이름NEWandold참조 테이블의 값을 참조하는 데 사용될 수 있습니다.NEWinsert and on에서 유효합니다 새 행이 삽입 또는 업데이트되는 것을 참조하기위한 규칙을 업데이트합니다.old13023_13130
젠 토토 만들기새로운 규칙을 정의합니다 지정된 테이블 또는보기에 적용.생성 또는 규칙 교체새 규칙을 만들거나 교체합니다 같은 테이블에 대해 같은 이름의 기존 규칙.
thePostgreSQL 젠 토토 시스템하나가 대체를 정의 할 수 있습니다 인서트, 업데이트 또는 삭제에서 수행 할 조치 데이터베이스 테이블. 규칙은 테이블 뷰를 AS로 구현하는 데 사용됩니다 잘.
규칙의 의미론은 당시 개인이 인스턴스 (ROW)가 액세스, 삽입, 업데이트 또는 삭제됩니다 이전 인스턴스 (SELECT, 업데이트 및 삭제) 및 새 인스턴스입니다. 인스턴스 (인서트 및 업데이트). 주어진 모든 규칙 이벤트 유형과 주어진 대상 테이블은 연속적으로 검사됩니다. (이름으로 순서대로). 인 경우조건WHERE 절 (if uther)는 사실입니다.Action의 일부 젠 토토이 실행됩니다. 그만큼Action대신 지정된 경우 원래 쿼리 대신 수행됩니다. 그렇지 않으면 ON의 경우 원래 쿼리 후에 수행됩니다. 삽입 또는 업데이트의 경우 원래 쿼리 이전 또는 삭제 중. 둘 다조건andAction, 오래된 필드의 값 인스턴스 및/또는 새 인스턴스가 대체됩니다old.Attribute-NameandNew.Attribute-Name.
theAction규칙의 일부 하나 이상의 쿼리로 구성 될 수 있습니다. 여러 쿼리를 작성하려면 괄호로 둘러싸여 있습니다. 이러한 쿼리는 수행됩니다 지정된 순서. 그만큼Action조치가 없다는 것을 나타내는 것은 없습니다. 따라서 대신에 규칙은 원래 쿼리가 실행되는 것을 억제하지 않습니다 (언제 그 상태는 사실입니다); a 규칙은 쓸모가 없습니다.
theAction젠 토토의 일부 동일한 명령 및 트랜잭션 식별자와 함께 활성화를 일으킨 사용자 명령.
규칙이 실제로 쿼리라는 것을 인식하는 것이 중요합니다. 변환 메커니즘 또는 쿼리 매크로. 전체 쿼리입니다 이를 포함하는 일련의 쿼리로 변환하도록 처리되었습니다. 규칙 조치. 이것은 쿼리가 시작되기 전에 발생합니다. 따라서 규칙 조건을 다음에 추가하여 조건부 규칙을 처리합니다. 규칙에서 파생 된 행동의 WHERE 절. 그만큼 실행하는 작업으로 규칙에 대한 설명 따라서 각 행은 다소 오해의 소지가 있습니다. 실제로 원한다면 각 물리적 행에 대해 독립적으로 발사되는 작업 아마도 방아쇠를 사용하고 싶을 것입니다. 규칙이 가장 유용합니다 전체 쿼리를 변환 해야하는 상황의 경우 처리중인 특정 데이터와 독립적으로.
현재, 선택 규칙은 대신 무조건적이어야합니다 규칙 및 단일 선택으로 구성된 조치가 있어야합니다. 질문. 따라서 ON SELECT 규칙은 테이블을 효과적으로 눈에 보이는 내용이 규칙의 선택 쿼리는 테이블 (무엇이든). 글을 쓰는 것이 더 나은 스타일로 간주됩니다 실제 테이블을 작성하고 정의하는 것보다보기 명령을 작성하십시오. 선택 규칙에.
PostgreSQL : 문서 : 7.3 :토토 캔 만들기더미 테이블을 만듭니다 (기본 스토리지 없음) ON SELECT 규칙을 연관시킵니다. 시스템은 허용되지 않습니다 실제 테이블이 없다는 것을 알고 있기 때문에보기 업데이트 거기. 업데이트 가능한보기의 환상을 만들 수 있습니다. 삽입, 업데이트 및 삭제 규칙 (또는 당신의 목적에 충분한 사람들의 하위 집합) 교체하기에 기타에 대한 적절한 업데이트로보기에서 조치 업데이트 테이블.
조건부 규칙을 사용하려는 경우 캐치가 있습니다. 업데이트보기 : 거기필수대신 무조건적입니다 보기에서 허용하고자하는 각 조치에 대한 규칙. 규칙이라면 조건부이거나 대신에 있지 않으면 시스템은 여전히 생각하기 때문에 업데이트 작업을 수행하려는 시도를 거부합니다. 더미 테이블에서 액션을 수행하려고 시도 할 수 있습니다. 어떤 경우에는. 유용한 모든 사례를 처리하려면 조건부 규칙, 당신은 할 수 있습니다; 무조건적인 작업을 추가하십시오 대신 시스템이 이해하도록 규칙이 없습니다. 더미 테이블을 업데이트하기 위해 절대 호출되지 않습니다. 그런 다음 조건부 규칙이 아닌 것; 그들이있는 경우 화재, 그들은 대신 기본값에 추가 된 행동을 더합니다.
당신은 테이블에 대한 규칙 정의에 액세스해야합니다. 그것에 대한 규칙을 정의하십시오. 사용grantandRevoke권한 변경.
순환 규칙을 피하기 위해주의를 기울이는 것이 매우 중요합니다. 예를 들어 다음 두 가지 규칙 정의 각각이지만 에 의해 받아 들여 됨PostgreSQL, 선택 명령이 원인PostgreSQL오류를보고합니다 쿼리는 너무 많이 순환했습니다 :
규칙 작성 "_return"as emp에 eMp 대신하십시오 Toyemp에서 *를 선택하십시오. 규칙 "_return"을 작성하십시오 Toyemp에 선택하십시오 대신하십시오 선택 *에서 emp;
이 시도에서 선택하려는 시도emp원인PostgreSQL발행 쿼리가 너무 많이 순환되어 오류 :
선택 * From Emp;
현재 규칙에 알림 쿼리가 포함 된 경우 알림 무조건적으로 실행됩니다 --- 즉, 알림은 규칙이 필요한 행이 없어도 발행됩니다. 적용하십시오. 예를 들어,
mytable에 대한 업데이트와 같이 규칙을 작성하십시오. mytable set name = 'foo'여기서 id = 42; 업데이트
하나의 알림 이벤트가 업데이트 중에 전송됩니다. ID = 42 인 행이 없습니다. 이것은 구현입니다. 향후 릴리스에서 고정 될 수있는 제한.