mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
Since some preparation work had already been done, the only source changes left were changing empty-element tags like <xref linkend="foo"> to <xref linkend="foo"/>, and changing the DOCTYPE. The source files are still named *.sgml, but they are actually XML files now. Renaming could be considered later. In the build system, the intermediate step to convert from SGML to XML is removed. Everything is build straight from the source files again. The OpenSP (or the old SP) package is no longer needed. The documentation toolchain instructions are updated and are much simpler now. Peter Eisentraut, Alexander Lakhin, Jürgen Purtz
163 lines
4.5 KiB
Plaintext
163 lines
4.5 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 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>
|
|
</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 PROCEDURE 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>
|