스포츠 토토 베트맨 9.3.25 문서화 | ||||
---|---|---|---|---|
이전 | up | 제 37 장. 이벤트 트리거 | PostgreSQL : 문서 : 9.3 : 사설 토토 시스템 |
이벤트 트리거 기능의 매우 간단한 예입니다. C. (절차 언어로 작성된 트리거의 예 절차 언어의 문서에서 찾을 수 있습니다.)
함수noddl
호출 될 때마다 예외. 이벤트는 정의를 트리거합니다
함수를와 연관시켰다.DDL_COMMAND_START이벤트. 그 효과는 모든 DDL입니다
명령 (에 언급 된 예외와 함께섹션 37.1)가 방지됩니다
달리기에서.
이것은 트리거 함수의 소스 코드입니다 :
#include "postgres.h" #include "명령/event_trigger.h" PG_MODULE_MAGIC; Datum Noddl (pg_function_args); pg_function_info_v1 (noddl); 자료 noddl (pg_function_args) EventTriggerData *trigdata; if (! calling_as_event_trigger (fcinfo)) / * 내부 오류 * / elog (오류, "이벤트 트리거 관리자에 의해 발사되지 않음"); trigdata = (EventTriggerData *) fcinfo- 컨텍스트; Ereport (오류, (errcode (errcode_insolficiter_privilege), errmsg ( "명령 \"%s \ "denied", trigdata- tag))); pg_return_null ();
소스 코드를 컴파일 한 후 (참조섹션 35.9.6), 함수를 선언하고 트리거 :
함수 create noddl () repits event_trigger를 반환합니다 'Noddl'언어 C; DDL_COMMAND_START에서 이벤트 트리거 NODDL을 만듭니다 절차 실행 noddl ();
이제 트리거 작업을 테스트 할 수 있습니다 :
=# \ dy 이벤트 트리거 목록 이름 | 이벤트 | 소유자 | 활성화 | 절차 | 태그 -------+-----------------+-------+--------+-------------------- noddl | DDL_COMMAND_START | 희미한 | 활성화 | noddl | (1 줄) =# 생성 테이블 foo (id serial); 오류 : 명령 "테이블 작성"거부
이 상황에서 일부 DDL 명령을 실행할 수 있도록 그렇게 해야하는 경우 이벤트 트리거를 떨어 뜨려야합니다. 또는 비활성화하십시오. 트리거 만 비활성화하는 것이 편리 할 수 있습니다. 거래 기간 :
시작; Alter Event 트리거 NODDL 비활성화; 테이블 foo (id serial)를 만듭니다. Alter Event 트리거 NODDL 활성화; 저지르다;
(이벤트에 대한 DDL 명령이 자체적으로 트리거되는 것을 기억하십시오. 이벤트 트리거의 영향을받습니다.)
이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | PostgreSQL : 문서 : 9.3 : 사설 토토 시스템 |
쓰기 이벤트 트리거 C의 기능 | up | 규칙 시스템 |