이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 38.4. 완전한 이벤트 스포츠 토토 결과 예버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

37.4. 완전한 이벤트 트리거 예시

다음은 이벤트 트리거 기능의 매우 간단한 예입니다. C로 작성되었습니다. (절차적 언어로 작성된 트리거의 예 절차적 언어 문서에서 찾을 수 있습니다.)

함수노들올림 호출될 때마다 예외가 발생합니다. 이벤트 트리거 정의 함수를와 연결했습니다.ddl_command_start이벤트. 그 결과 모든 DDL이 명령(에 언급된 예외 제외)섹션 37.1)이 방지됩니다. 달리기부터.

이것은 트리거 함수의 소스 코드입니다:

#include "postgres.h"
#include "명령/event_trigger.h"

PG_MODULE_MAGIC;

데이텀 고개(PG_FUNCTION_ARGS);

PG_FUNCTION_INFO_V1(noddl);

데이텀
끄덕끄덕(PG_FUNCTION_ARGS)

    EventTriggerData *trigdata;

    if (!CALLED_AS_EVENT_TRIGGER(fcinfo)) /* 내부 오류 */
        elog(ERROR, "이벤트 트리거 관리자에 의해 실행되지 않았습니다.");

    trigdata = (EventTriggerData *) fcinfo-context;

    ereport(오류,
        (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
                 errmsg("\"%s\" 명령이 거부되었습니다.", trigdata-tag)));

    PG_RETURN_NULL();

소스 코드를 컴파일한 후(참조섹션 35.9.6), 함수를 선언하고 트리거:

함수 생성 noddl() 반환 event_trigger
    AS 'noddl' 언어 C;

ddl_command_start에서 이벤트 트리거 noddl 생성
    실행 절차 noddl();

이제 트리거 작동을 테스트할 수 있습니다:

=# \dy
                     이벤트 트리거 목록
 이름 |       이벤트 | 소유자 | 활성화됨 | 절차 | 태그 
-------+------+-------+---------+------------+------
 끄덕끄덕 | ddl_command_start | 어두워 | 활성화 | 끄덕끄덕 | 
(1줄)

=# CREATE TABLE foo(id 일련번호);
오류: "CREATE TABLE" 명령이 거부되었습니다.

이 상황에서 일부 DDL 명령을 실행하려면 그렇게 해야 할 경우 이벤트 트리거를 삭제하거나 아니면 비활성화하세요. 트리거를 비활성화하는 것이 편리할 수 있습니다. 거래 기간:

시작;
ALTER EVENT TRIGGER noddl 비활성화;
CREATE TABLE foo(ID 일련번호);
ALTER EVENT TRIGGER noddl 활성화;
커밋;

(이벤트 트리거 자체에 대한 DDL 명령은 이벤트 트리거의 영향을 받습니다.)