C에 작성된 이벤트 사설 토토 사이트 함수의 매우 간단한 예는 다음과 같습니다 (절차 언어로 작성된 사설 토토 사이트의 예는 절차 언어 문서에서 찾을 수 있습니다.)
함수noddl
호출 할 때마다 예외가 발생합니다. 이벤트 트리거 정의는 함수를와 연관시켰다.DDL_COMMAND_START
이벤트. 효과는 모든 DDL 명령 (에 언급 된 예외와 함께입니다.PostgreSQL : 문서 : 13 : 39.1. 이벤트 토토 사이트 추천 동작 개요) 실행이 방지됩니다.
이것은 트리거 함수의 소스 코드입니다 :
#include "postgres.h" #include "명령/event_trigger.h" PG_MODULE_MAGIC; 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", getCommandTagName (trigdata- tag))); pg_return_null ();
소스 코드를 컴파일 한 후 (참조섹션 37.10.5), 함수와 트리거를 선언합니다 :
함수 create noddl () retud_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 명령이 이벤트 사설 토토 사이트의 영향을받지 않음을 기억하십시오.)
문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면