mirror of
https://github.com/postgres/postgres.git
synced 2025-05-09 18:21:05 +03:00
This follows the American format, https://jakubmarian.com/comma-after-i-e-and-e-g/. There is no intention of requiring this format for future text, but making existing text consistent every few years makes sense. Discussion: https://postgr.es/m/20200825183619.GA22369@momjian.us Backpatch-through: 9.5
171 lines
4.9 KiB
Plaintext
171 lines
4.9 KiB
Plaintext
<!--
|
|
doc/src/sgml/ref/create_event_trigger.sgml
|
|
PostgreSQL documentation
|
|
-->
|
|
|
|
<refentry id="sql-createeventtrigger">
|
|
<indexterm zone="sql-createeventtrigger">
|
|
<primary>CREATE EVENT TRIGGER</primary>
|
|
</indexterm>
|
|
|
|
<refmeta>
|
|
<refentrytitle>CREATE EVENT TRIGGER</refentrytitle>
|
|
<manvolnum>7</manvolnum>
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>CREATE EVENT TRIGGER</refname>
|
|
<refpurpose>define a new event trigger</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
<synopsis>
|
|
CREATE EVENT TRIGGER <replaceable class="parameter">name</replaceable>
|
|
ON <replaceable class="parameter">event</replaceable>
|
|
[ WHEN <replaceable class="parameter">filter_variable</replaceable> IN (filter_value [, ... ]) [ AND ... ] ]
|
|
EXECUTE { FUNCTION | PROCEDURE } <replaceable class="parameter">function_name</replaceable>()
|
|
</synopsis>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
|
|
<para>
|
|
<command>CREATE EVENT TRIGGER</command> creates a new event trigger.
|
|
Whenever the designated event occurs and the <literal>WHEN</literal> condition
|
|
associated with the trigger, if any, is satisfied, the trigger function
|
|
will be executed. For a general introduction to event triggers, see
|
|
<xref linkend="event-triggers"/>. The user who creates an event trigger
|
|
becomes its owner.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Parameters</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><replaceable class="parameter">name</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
The name to give the new trigger. This name must be unique within
|
|
the database.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="parameter">event</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
The name of the event that triggers a call to the given function.
|
|
See <xref linkend="event-trigger-definition"/> for more information
|
|
on event names.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="parameter">filter_variable</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
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 supported
|
|
<replaceable class="parameter">filter_variable</replaceable>
|
|
is <literal>TAG</literal>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="parameter">filter_value</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
A list of values for the
|
|
associated <replaceable class="parameter">filter_variable</replaceable>
|
|
for which the trigger should fire. For <literal>TAG</literal>, this means a
|
|
list of command tags (e.g., <literal>'DROP FUNCTION'</literal>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="parameter">function_name</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
A user-supplied function that is declared as taking no argument and
|
|
returning type <literal>event_trigger</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
In the syntax of <literal>CREATE EVENT TRIGGER</literal>, the keywords
|
|
<literal>FUNCTION</literal> and <literal>PROCEDURE</literal> are
|
|
equivalent, but the referenced function must in any case be a function,
|
|
not a procedure. The use of the keyword <literal>PROCEDURE</literal>
|
|
here is historical and deprecated.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="sql-createeventtrigger-notes">
|
|
<title>Notes</title>
|
|
|
|
<para>
|
|
Only superusers can create event triggers.
|
|
</para>
|
|
|
|
<para>
|
|
Event triggers are disabled in single-user mode (see <xref
|
|
linkend="app-postgres"/>). 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.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 id="sql-createeventtrigger-examples">
|
|
<title>Examples</title>
|
|
|
|
<para>
|
|
Forbid the execution of any <link linkend="ddl">DDL</link> command:
|
|
|
|
<programlisting>
|
|
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 FUNCTION abort_any_command();
|
|
</programlisting></para>
|
|
</refsect1>
|
|
|
|
<refsect1 id="sql-createeventtrigger-compatibility">
|
|
<title>Compatibility</title>
|
|
|
|
<para>
|
|
There is no <command>CREATE EVENT TRIGGER</command> statement in the
|
|
SQL standard.
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>See Also</title>
|
|
|
|
<simplelist type="inline">
|
|
<member><xref linkend="sql-altereventtrigger"/></member>
|
|
<member><xref linkend="sql-dropeventtrigger"/></member>
|
|
<member><xref linkend="sql-createfunction"/></member>
|
|
</simplelist>
|
|
</refsect1>
|
|
</refentry>
|