CREATE EVENT TRIGGER
Synopsis
CREATE EVENT TRIGGERname ONevent [ WHENfilter_variable IN (filter_value [, ... ]) [ AND ... ] ] EXECUTE PROCEDUREfunction_name()
Description
CREATE EVENT TRIGGER creates a new event trigger. Whenever the designated event occurs and theWHEN condition associated with the trigger, if any, is satisfied, the trigger function will be executed. For a general introduction to event triggers, seeChapter 37. The user who creates an event trigger becomes its owner.
Parameters
- name
The name to give the new trigger. This name must be unique within the database.
- event
The name of the event that triggers a call to the given function. SeeSection 37.1 for more information on event names.
- filter_variable
The name of a variable used to filter events. This makes it possible to restrict the firing of the trigger to a subset of the cases in which it is supported. Currently the only supportedfilter_variable isTAG.
- filter_value
A list of values for the associatedfilter_variable for which the trigger should fire. ForTAG, this means a list of command tags (e.g.'DROP FUNCTION').
- function_name
A user-supplied function that is declared as taking no argument and returning typeevent_trigger.
Notes
Only superusers can create event triggers.
Event triggers are disabled in single-user mode (seepostgres). If an erroneous event trigger disables the database so much that you can't even drop the trigger, restart in single-user mode and you'll be able to do that.
Examples
Forbid the execution of anyDDL command:
CREATE OR REPLACE FUNCTION abort_any_command() RETURNS event_trigger LANGUAGE plpgsql AS $$BEGIN RAISE EXCEPTION 'command % is disabled', tg_tag;END;$$;CREATE EVENT TRIGGER abort_ddl ON ddl_command_start EXECUTE PROCEDURE abort_any_command();