토토 꽁 머니 생성이름AS ON이벤트받는 사람객체[ 어디에서조건]
[ 대신 ] [을 하세요행동| 아무것도 ]
생성할 규칙의 이름입니다.
이벤트는 다음 중 하나입니다.선택, 업데이트, 삭제또는삽입.
개체는 다음 중 하나입니다.테이블또는테이블.열.
모든 SQL WHERE 절,신규또는오래된대신 나타날 수 있습니다. 인스턴스 변수가 있을 때마다 인스턴스 변수 SQL에서는 허용됩니다.
모든 SQL 문,신규또는오래된대신 나타날 수 있습니다. 인스턴스 변수가 있을 때마다 인스턴스 변수 SQL에서는 허용됩니다.
토토 꽁 머니이 성공적으로 완료되면 메시지가 반환됩니다. 생성되었습니다.
그포스트그레스 토토 꽁 머니 시스템대체를 정의할 수 있습니다. 삽입, 업데이트, 삭제 시 수행할 작업 데이터베이스 테이블 또는 클래스. 현재 규칙은 다음과 같이 사용됩니다. 테이블 뷰를 구현합니다.
규칙의 의미는 당시 개인이 인스턴스에 액세스, 삽입, 업데이트 또는 삭제된 경우 이전 인스턴스(선택, 업데이트 및 삭제용) 및 새 인스턴스 인스턴스(삽입 및 업데이트용). 만약이벤트ON 절과에 지정됨조건WHERE에 지정됨 절은 이전 인스턴스에 대해 true입니다.행동규칙의 일부가 실행됩니다. 첫째, 그러나 이전 인스턴스 및/또는 새 인스턴스의 필드 값 인스턴스는 다음으로 대체됩니다.오래된.속성-이름그리고새로운.속성-이름.
그행동토토 꽁 머니의 일부 동일한 명령 및 트랜잭션 식별자를 사용하여 실행됩니다. 활성화를 유발한 사용자 명령입니다.
SQL 규칙에 대한 주의가 필요합니다. 같은 학번이면 이름 또는 인스턴스 변수가에 나타납니다.이벤트, 조건그리고행동토토 꽁 머니의 일부, 그것들은 모두 다른 튜플 변수로 간주됩니다. 좀 더 정확하게는,신규그리고오래된이들 사이에 공유되는 유일한 튜플 변수입니다 조항. 예를 들어, 다음 두 규칙은 동일합니다. 의미론:
emp.salary 업데이트 중 emp.name = "Joe"
할
업데이트 emp 설정 ... 어디서 ...
emp-1.salary 업데이트 중 emp-2.name = "Joe"
할
업데이트 emp-3 세트 ... 어디서 ...각 규칙에는 선택적 태그 INSTEAD가 있을 수 있습니다. 이것이 없으면
태그,액션다음에 수행됩니다
다음과 같은 경우 사용자 명령에 추가됩니다.이벤트에서조건규칙의 일부가 발생합니다. 또는,액션부분이 대신 완료됩니다.
사용자 명령. 이 나중의 경우에는액션키워드일 수 있음아무것도 없음.
순환 규칙을 피하는 것이 매우 중요합니다. 에 대한 예를 들어, 다음 두 규칙 정의는 각각 에서 수락함포스트그레스, 선택 명령으로 인해 발생합니다.포스트그레스오류를 보고합니다. 왜냐하면 쿼리가 너무 많이 순환되었습니다.
예 19-1. 순환 재작성의 예 토토 꽁 머니 조합.
bad_rule_combination_1 AS 토토 꽁 머니 생성
Emp로 선택
대신에
toyemp를 선택하세요;
bad_rule_combination_2 AS 토토 꽁 머니 생성
ON 선택 TOyemp
대신에
비우려면 선택하세요.
EMP에서 선택하려는 시도는 다음과 같습니다.포스트그레오류를 발행하기 위해 쿼리가 너무 많이 순환되었습니다.
SELECT * FROM emp;
다음을 수행하려면 클래스에 대한 규칙 정의 액세스 권한이 있어야 합니다. 그것에 대한 규칙을 정의하십시오. 사용부여그리고취소권한을 변경합니다.
a의 개체SQL토토 꽁 머니은 할 수 없습니다 배열 참조여야 하며 매개변수를 가질 수 없습니다.
"oid" 필드 외에 시스템 속성은 다음과 같을 수 없습니다. 규칙의 어느 곳에서나 참조됩니다. 무엇보다도 이는 다음을 의미합니다. 인스턴스의 기능(예:foo(emp)어디에서emp은 클래스)는 규칙의 어느 곳에서도 호출할 수 없습니다.
토토 꽁 머니 시스템은 규칙 텍스트와 쿼리 계획을 텍스트로 저장합니다. 속성. 이는 다음과 같은 경우 토토 꽁 머니 생성이 실패할 수 있음을 의미합니다. 규칙과 그 다양한 내부 표현이 일부를 초과합니다. 한 페이지(8KB) 정도의 값입니다.
Sam이 Joe와 동일한 급여 조정을 받도록 만드세요:
규칙 example_1 AS 만들기
업데이트 emp.salary WHERE old.name = "Joe"
할
업데이트
SET 급여 = new.salary
WHERE emp.name = "샘";Joe가 급여 조정을 받을 때 이벤트는 다음과 같습니다.
true가 되고 Joe의 이전 인스턴스와 제안된 새 인스턴스는
실행 루틴에 사용할 수 있습니다. 따라서 그의 새 연봉은
이후에 규칙의 작업 부분으로 대체됩니다.
실행. 이는 Joe의 급여를 Sam에게 전파합니다.Bill이 액세스되면 Joe의 급여를 받도록 만드세요:
규칙 example_2 AS 생성
EMP.salary로 선택
WHERE old.name = "빌"
대신에
직원 급여 선택
엠프에서
WHERE emp.name = "Joe";
조가 신발을 신은 직원의 급여에 접근하는 것을 거부합니다. 부서 (현재_사용자반환 현재 사용자의 이름):
규칙 example_3 AS 만들기
켜짐
직원 급여로 선택
여기서 old.dept = "신발" AND current_user = "Joe"
대신 아무것도 하지 마십시오.
장난감에서 일하는 직원의 보기를 만듭니다. 부서.
CREATE toyemp(이름 = char16, 급여 = int4);
example_4 AS 토토 꽁 머니 생성
ON 선택 TOyemp
대신에
SELECT emp.이름, emp.급여
엠프에서
emp.dept = "장난감";
모든 신입 직원은 연봉이 5,000 이하여야 합니다.
규칙 example_5 AS 생성
신규 급여 5000인 곳에서 비활성 상태로 전환
할
업데이트 뉴스세트 급여 = 5000;
토토 꽁 머니 생성문은 다음과 같습니다포스트그레스언어 확장. 없습니다토토 꽁 머니 생성문의 내용SQL92.