event-trigger-docs-incremental.patch

application/octet-stream

Filename: event-trigger-docs-incremental.patch
Type: application/octet-stream
Part: 0
Message: Re: Event Triggers reduced, v1

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
File+
doc/src/sgml/catalogs.sgml 14 12
doc/src/sgml/event-trigger.sgml 466 0
doc/src/sgml/filelist.sgml 1 0
doc/src/sgml/plperl.sgml 6 6
doc/src/sgml/plpgsql.sgml 10 14
doc/src/sgml/plpython.sgml 5 5
doc/src/sgml/pltcl.sgml 4 4
doc/src/sgml/postgres.sgml 1 0
doc/src/sgml/ref/alter_event_trigger.sgml 3 3
doc/src/sgml/ref/create_event_trigger.sgml 26 411
doc/src/sgml/ref/drop_event_trigger.sgml 8 6
doc/src/sgml/trigger.sgml 0 18
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml
index dae8028..b100a42 100644
--- a/doc/src/sgml/catalogs.sgml
+++ b/doc/src/sgml/catalogs.sgml
@@ -99,11 +99,6 @@
      </row>
 
      <row>
-      <entry><link linkend="catalog-pg-event-trigger"><structname>pg_event_trigger</structname></link></entry>
-      <entry>event triggers</entry>
-     </row>
-
-     <row>
       <entry><link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link></entry>
       <entry>check constraints, unique constraints, primary key constraints, foreign key constraints</entry>
      </row>
@@ -149,6 +144,11 @@
      </row>
 
      <row>
+      <entry><link linkend="catalog-pg-event-trigger"><structname>pg_event_trigger</structname></link></entry>
+      <entry>event triggers</entry>
+     </row>
+
+     <row>
       <entry><link linkend="catalog-pg-extension"><structname>pg_extension</structname></link></entry>
       <entry>installed extensions</entry>
      </row>
@@ -1871,6 +1871,7 @@
 
   <para>
    The catalog <structname>pg_event_trigger</structname> stores event triggers.
+   See <xref linkend="event-triggers"> for more information.
   </para>
 
   <table>
@@ -1891,30 +1892,28 @@
       <entry><structfield>evtname</structfield></entry>
       <entry><type>name</type></entry>
       <entry></entry>
-      <entry>Trigger name (unique)</entry>
+      <entry>Trigger name (must be unique)</entry>
      </row>
 
      <row>
       <entry><structfield>evtevent</structfield></entry>
       <entry><type>name</type></entry>
       <entry></entry>
-      <entry>The event this trigger fires for.</entry>
+      <entry>Identifies the event for which this trigger fires</entry>
      </row>
 
      <row>
       <entry><structfield>evtowner</structfield></entry>
       <entry><type>oid</type></entry>
       <entry><literal><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.oid</literal></entry>
-      <entry>Owner of the event</entry>
+      <entry>Owner of the event trigger</entry>
      </row>
 
      <row>
       <entry><structfield>evtfoid</structfield></entry>
       <entry><type>oid</type></entry>
       <entry><literal><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.oid</literal></entry>
-      <entry>
-       The OID of the function called by this event trigger.
-      </entry>
+      <entry>The function to be called</entry>
      </row>
 
      <row>
@@ -1935,7 +1934,10 @@
       <entry><structfield>evttags</structfield></entry>
       <entry><type>text[]</type></entry>
       <entry></entry>
-      <entry>Command tags of the commands this trigger is restricted to.</entry>
+      <entry>
+        Command tags for which this trigger will fire.  If NULL, the firing
+        of this trigger is not restricted on the basis of the command tag.
+      </entry>
      </row>
     </tbody>
    </tgroup>
diff --git a/doc/src/sgml/event-trigger.sgml b/doc/src/sgml/event-trigger.sgml
new file mode 100644
index 0000000..4ff93d0
--- /dev/null
+++ b/doc/src/sgml/event-trigger.sgml
@@ -0,0 +1,466 @@
+<!-- doc/src/sgml/event-trigger.sgml -->
+
+ <chapter id="event-triggers">
+  <title>Event Triggers</title>
+
+  <indexterm zone="event-triggers">
+   <primary>event trigger</primary>
+  </indexterm>
+
+  <para>
+   To supplement the trigger mechanism discussed in <xref linkend="triggers">,
+   <productname>PostgreSQL</> also provides event triggers.  Unlike regular
+   triggers, which are attached to a single table and capture only DML events,
+   event triggers are global to a particular database and are capable of
+   capturing DDL events.
+  </para>
+
+  <para>
+   Like regular triggers, event triggers can be written in any procedural
+   language that includes event trigger support, or in C, but not in plain
+   SQL.
+  </para>
+
+  <sect1 id="event-trigger-definition">
+   <title>Overview of Event Trigger Behavior</title>
+
+   <para>
+     An event trigger fires whenever the event with which it is
+     associated occurs in the database in which it is defined.  Currently,
+     the only supported event is <literal>command_start</>.  Support for
+     additional events may be added in future releases.
+   </para>
+
+   <para>
+     The <literal>command_start</> event occurs just before the execution of
+     many SQL commands, most of which can be broadly described as
+     <link linkend="ddl">DDL</link>.  There are a number of commands that,
+     for various reasons, are specifically excluded from the event trigger
+     system:
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       The <literal>command_start</> event does not occur for commands that
+       access or modify data within a particular table, such
+       <xref linkend="sql-select">, <xref linkend="sql-insert">, 
+       <xref linkend="sql-update">, <xref linkend="sql-delete">, and
+       <xref linkend="sql-truncate">.  This also includes commands related
+       to prepared plans, such as <xref linkend="sql-prepare">,
+       <xref linkend="sql-deallocate">, <xref linkend="sql-declare">,
+       and <xref linkend="sql-fetch">.  Ordinary triggers or rules should
+       be used in these cases.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       The <literal>command_start</> event does not occur for commands that
+       create, alter, or drop global objects.  Unlike the event trigger, these
+       objects are not part of the current database; they are accessible from
+       all databases in the cluster, and are therefore unaffected by event
+       triggers.  Such objects include databases, tablespaces, and roles.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       The <literal>command_start</> event does not occur for commands where
+       firing a trigger might result either result in system instability or
+       interfere with the administrator's ability to regain control of the
+       database.  These include transaction control commands, such as
+       <xref linkend="sql-begin"> or <xref linkend="sql-commit">; configuration
+       commands, such as <xref linkend="sql-set"> or <xref linkend="sql-show">;
+       and commands related to the event trigger mechanism itself, such as
+       <xref linkend="sql-createeventtrigger">,
+       <xref linkend="sql-altereventtrigger">, and
+       <xref linkend="sql-dropeventtrigger">.
+      </para>
+     </listitem>
+    </itemizedlist>
+   </para>
+
+   <para>
+     For a complete list of commands supported by the event trigger mechanism,
+     see <xref linkend="event-trigger-matrix">.
+   </para>
+
+   <para>
+     In order to create an event trigger, you must first create a function with
+     the special return type <literal>event_trigger</literal>.  This function
+     need not (and may not) return a value; the return type serves merely as
+     a signal that the function is to be invoked as an event trigger.
+   </para>
+
+   <para>
+     If more than one event trigger is defined for a particular event, they will
+     fire in alphabetical order by trigger name.
+   </para>
+
+   <para>
+     A trigger definition can also specify a <literal>WHEN</literal>
+     condition so that, for example, a <literal>command_start</literal>
+     tag can be fired only for particular commands which the user wishes
+     to intercept.  A common use of such triggers is to restrict the range of
+     DDL operations which users may perform.
+   </para>
+  </sect1>
+
+  <sect1 id="event-trigger-matrix">
+   <title>Event Trigger Firing Matrix</title>
+
+   <para>
+     <xref linkend="event-trigger-by-command-tag"> lists all commands
+     for which event triggers are supported.
+   </para>
+
+   <table id="event-trigger-by-command-tag">
+     <title>Event Trigger Support by Command Tag</title>
+     <tgroup cols="2">
+      <thead>
+       <row>
+        <entry>command tag</entry>
+        <entry><literal>command_start</literal></entry>
+       </row>
+      </thead>
+      <tbody>
+       <row>
+        <entry align="left"><literal>ALTER AGGREGATE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER COLLATION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER CONVERSION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER DOMAIN</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER EXTENSION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER FOREIGN DATA WRAPPER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER FOREIGN TABLE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER FUNCTION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER LANGUAGE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER OPERATOR</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER OPERATOR CLASS</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER OPERATOR FAMILY</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER SCHEMA</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER SEQUENCE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER SERVER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER TABLE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER TEXT SEARCH CONFIGURATION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER TEXT SEARCH DICTIONARY</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER TEXT SEARCH PARSER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER TEXT SEARCH TEMPLATE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER TRIGGER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER TYPE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER USER MAPPING</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>ALTER VIEW</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CLUSTER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE AGGREGATE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE CAST</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE COLLATION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE CONVERSION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE DOMAIN</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE EXTENSION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE FOREIGN DATA WRAPPER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE FOREIGN TABLE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE FUNCTION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE INDEX</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE LANGUAGE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE OPERATOR</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE OPERATOR CLASS</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE OPERATOR FAMILY</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE RULE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE SCHEMA</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE SEQUENCE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE SERVER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE TABLE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE TABLE AS</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE TEXT SEARCH CONFIGURATION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE TEXT SEARCH DICTIONARY</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE TEXT SEARCH PARSER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE TEXT SEARCH TEMPLATE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE TRIGGER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE TYPE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE USER MAPPING</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>CREATE VIEW</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP AGGREGATE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP CAST</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP COLLATION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP CONVERSION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP DOMAIN</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP EXTENSION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP FOREIGN DATA WRAPPER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP FOREIGN TABLE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP FUNCTION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP INDEX</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP LANGUAGE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP OPERATOR</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP OPERATOR CLASS</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP OPERATOR FAMILY</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP RULE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP SCHEMA</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP SEQUENCE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP SERVER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP TABLE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP TEXT SEARCH CONFIGURATION</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP TEXT SEARCH DICTIONARY</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP TEXT SEARCH PARSER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP TEXT SEARCH TEMPLATE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP TRIGGER</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP TYPE</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP USER MAPPING</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>DROP VIEW</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>LOAD</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>REINDEX</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>SELECT INTO</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+       <row>
+        <entry align="left"><literal>VACUUM</literal></entry>
+        <entry align="center"><literal>X</literal></entry>
+       </row>
+      </tbody>
+     </tgroup>
+   </table>
+  </sect1>
+
+</chapter>
diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml
index 82b9e39..db4cc3a 100644
--- a/doc/src/sgml/filelist.sgml
+++ b/doc/src/sgml/filelist.sgml
@@ -61,6 +61,7 @@
 <!ENTITY rules      SYSTEM "rules.sgml">
 <!ENTITY spi        SYSTEM "spi.sgml">
 <!ENTITY trigger    SYSTEM "trigger.sgml">
+<!ENTITY event-trigger SYSTEM "event-trigger.sgml">
 <!ENTITY xaggr      SYSTEM "xaggr.sgml">
 <!ENTITY xfunc      SYSTEM "xfunc.sgml">
 <!ENTITY xindex     SYSTEM "xindex.sgml">
diff --git a/doc/src/sgml/plperl.sgml b/doc/src/sgml/plperl.sgml
index 9ec7a6e..e490086 100644
--- a/doc/src/sgml/plperl.sgml
+++ b/doc/src/sgml/plperl.sgml
@@ -1220,7 +1220,7 @@ CREATE TRIGGER test_valid_id_trig
   </sect2>
 
     <sect2 id="plperl-event-trigger">
-     <title>Trigger Procedures on Events in PL/Perl </title>
+     <title>Trigger Procedures on Events in PL/Perl</title>
 
      <indexterm>
       <primary>event trigger</primary>
@@ -1229,9 +1229,9 @@ CREATE TRIGGER test_valid_id_trig
 
     <para>
      Event trigger procedures can be written in PL/Perl.
-     <productname>PostgreSQL</productname> requires that a procedure that is to be called
-     as a trigger must be declared as a function with no arguments
-     and a return type of <literal>event_trigger</>.
+     <productname>PostgreSQL</productname> requires that a procedure that
+     is to be called as an event trigger must be declared as a function with
+     no arguments and a return type of <literal>event_trigger</>.
     </para>
 
     <para>
@@ -1272,7 +1272,7 @@ CREATE TRIGGER test_valid_id_trig
        <term><varname>$_TD-&gt;{objectname}</varname></term>
        <listitem>
         <para>
-         The name of the objectthat caused the trigger procedure
+         The name of the object that caused the trigger procedure
          to be invoked.
         </para>
        </listitem>
@@ -1289,7 +1289,7 @@ CREATE TRIGGER test_valid_id_trig
       </varlistentry>
      </variablelist>
     </para>
-      </sect2>
+  </sect2>
 
  </sect1>
 
diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml
index fadd5d7..a21aaf2 100644
--- a/doc/src/sgml/plpgsql.sgml
+++ b/doc/src/sgml/plpgsql.sgml
@@ -3378,7 +3378,7 @@ RAISE unique_violation USING MESSAGE = 'Duplicate user ID: ' || user_id;
   </indexterm>
 
   <sect2 id="plpgsql-dml-trigger">
-   <title>Triggers on data change</title>
+   <title>Triggers on data changes</title>
 
    <para>
     <application>PL/pgSQL</application> can be used to define trigger
@@ -3930,19 +3930,19 @@ SELECT * FROM sales_summary_bytime;
 </sect2>
 
   <sect2 id="plpgsql-event-trigger">
-   <title>Triggers on event</title>
+   <title>Triggers on events</title>
 
    <para>
-    <application>PL/pgSQL</application> can be used to define command
-    trigger procedures. An event trigger procedure is created with the
-    <command>CREATE FUNCTION</> command, declaring it as a function with
-    no arguments and a return type of <type>event trigger</type>.
+    <application>PL/pgSQL</application> can be used to define event
+    triggers.  <productname>PostgreSQL</> requires that a procedure that
+    is to be called as an event trigger must be declared as a function with
+    no arguments and a return type of <literal>event_trigger</>.
    </para>
 
-  <para>
-   When a <application>PL/pgSQL</application> function is called as a
-   event trigger, several special variables are created automatically
-   in the top-level block. They are:
+   <para>
+    When a <application>PL/pgSQL</application> function is called as a
+    event trigger, several special variables are created automatically
+    in the top-level block. They are:
 
    <variablelist>
     <varlistentry>
@@ -3999,10 +3999,6 @@ SELECT * FROM sales_summary_bytime;
    </variablelist>
   </para>
 
-  <para>
-   The event trigger function's return value is not used.
-  </para>
-
    <para>
     <xref linkend="plpgsql-event-trigger-example"> shows an example of a
     event trigger procedure in <application>PL/pgSQL</application>.
diff --git a/doc/src/sgml/plpython.sgml b/doc/src/sgml/plpython.sgml
index e2a8f41..99ce8f9 100644
--- a/doc/src/sgml/plpython.sgml
+++ b/doc/src/sgml/plpython.sgml
@@ -872,7 +872,7 @@ $$ LANGUAGE plpythonu;
   </sect2>
 
    <sect2 id="plpython-event-trigger">
-     <title>Trigger Procedures on Events in PL/Python </title>
+     <title>Trigger Procedures on Events in PL/Python</title>
 
      <indexterm>
       <primary>event trigger</primary>
@@ -881,9 +881,9 @@ $$ LANGUAGE plpythonu;
 
     <para>
      Event trigger procedures can be written in PL/Python.
-     <productname>PostgreSQL</productname> requires that a procedure that is to be called
-     as a trigger must be declared as a function with no arguments
-     and a return type of <literal>event_trigger</>.
+     <productname>PostgreSQL</productname> requires that a procedure that
+     is to be called as an event trigger must be declared as a function with
+     no arguments and a return type of <literal>event_trigger</>.
     </para>
 
     <para>
@@ -924,7 +924,7 @@ $$ LANGUAGE plpythonu;
        <term><varname>TD["objectname"]</varname></term>
        <listitem>
         <para>
-         The name of the objectthat caused the trigger procedure
+         The name of the object that caused the trigger procedure
          to be invoked.
         </para>
        </listitem>
diff --git a/doc/src/sgml/pltcl.sgml b/doc/src/sgml/pltcl.sgml
index c9a4e4c..c932ddb 100644
--- a/doc/src/sgml/pltcl.sgml
+++ b/doc/src/sgml/pltcl.sgml
@@ -725,9 +725,9 @@ CREATE TRIGGER trig_mytab_modcount BEFORE INSERT OR UPDATE ON mytab
 
     <para>
      Event trigger procedures can be written in PL/Tcl.
-     <productname>PostgreSQL</productname> requires that a procedure that is to be called
-     as a trigger must be declared as a function with no arguments
-     and a return type of <literal>event_trigger</>.
+     <productname>PostgreSQL</productname> requires that a procedure that
+     is to be called as an event trigger must be declared as a function with
+     no arguments and a return type of <literal>event_trigger</>.
     </para>
 
     <para>
@@ -768,7 +768,7 @@ CREATE TRIGGER trig_mytab_modcount BEFORE INSERT OR UPDATE ON mytab
        <term><varname>$TG_objectname</varname></term>
        <listitem>
         <para>
-         The name of the objectthat caused the trigger procedure
+         The name of the object that caused the trigger procedure
          to be invoked.
         </para>
        </listitem>
diff --git a/doc/src/sgml/postgres.sgml b/doc/src/sgml/postgres.sgml
index 7e80265..4ef1fc1 100644
--- a/doc/src/sgml/postgres.sgml
+++ b/doc/src/sgml/postgres.sgml
@@ -208,6 +208,7 @@
 
   &extend;
   &trigger;
+  &event-trigger;
   &rules;
 
   &xplang;
diff --git a/doc/src/sgml/ref/alter_event_trigger.sgml b/doc/src/sgml/ref/alter_event_trigger.sgml
index d4af986..db4727b 100644
--- a/doc/src/sgml/ref/alter_event_trigger.sgml
+++ b/doc/src/sgml/ref/alter_event_trigger.sgml
@@ -93,12 +93,12 @@ ALTER EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable> RENAME TO
   </variablelist>
  </refsect1>
 
- <refsect1>
+ <refsect1 id="sql-alterventtrigger-compatibility">
   <title>Compatibility</title>
 
   <para>
-   <command>ALTER EVENT TRIGGER</command> is a <productname>PostgreSQL</>
-   extension of the SQL standard.
+   There is no <command>ALTER EVENT TRIGGER</command> statement in the
+   SQL standard.
   </para>
  </refsect1>
 
diff --git a/doc/src/sgml/ref/create_event_trigger.sgml b/doc/src/sgml/ref/create_event_trigger.sgml
index 0e3b0f8..3b3d474 100644
--- a/doc/src/sgml/ref/create_event_trigger.sgml
+++ b/doc/src/sgml/ref/create_event_trigger.sgml
@@ -24,7 +24,7 @@ PostgreSQL documentation
 CREATE EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable>
   ON <replaceable class="PARAMETER">event</replaceable>
   [ WHEN <replaceable class="PARAMETER">filter_variable</replaceable> IN (filter_value [ , ... ] ) ]
-  EXECUTE PROCEDURE <replaceable class="PARAMETER">function_name</replaceable> ()
+  EXECUTE PROCEDURE <replaceable class="PARAMETER">function_name</replaceable>()
 </synopsis>
  </refsynopsisdiv>
 
@@ -33,35 +33,11 @@ CREATE EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable>
 
   <para>
    <command>CREATE EVENT TRIGGER</command> creates a new event trigger.
-   The trigger will be associated with the specified event and will
-   execute the specified
-   function <replaceable class="parameter">function_name</replaceable> when
-   that event occurs.
-  </para>
-
-  <para>
-   The event trigger gives a procedure to fire before the event is
-   executed. In some cases the procedure can be fired instead of the event
-   code PostgreSQL would run itself. A event trigger's function must
-   return <literal>event_trigger</literal> data type. It can then only
-   abort the execution of the command by raising an exception.
-  </para>
-
-  <para>
-   If multiple triggers of the same kind are defined for the same event,
-   they will be fired in alphabetical order by name.
-  </para>
-
-  <para>
-   Note that objects dropped by the effect of <literal>DROP
-   CASCADE</literal> will not result in a event trigger firing, only the
-   top-level event for the main object will fire a event trigger. That
-   also applies to other dependencies following, as in <literal>DROP OWNED
-   BY</literal>.
-  </para>
-
-  <para>
-   Refer to <xref linkend="triggers"> for more information about triggers.
+   Whenever the designated event occurs and the <literal>WHEN</> 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>
 
@@ -73,9 +49,8 @@ CREATE EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable>
     <term><replaceable class="parameter">name</replaceable></term>
     <listitem>
      <para>
-      The name to give the new trigger. This must be distinct from the name
-      of any other trigger for the same table. The name cannot be
-      schema-qualified.
+      The name to give the new trigger.  This name must be unique within
+      the database.
      </para>
     </listitem>
    </varlistentry>
@@ -85,8 +60,8 @@ CREATE EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable>
     <listitem>
      <para>
       The name of the event that triggers a call to the given function.
-      Currently only <literal>command_start</literal> is supported, that
-      event is run before the specific command code takes control.
+      See <xref linkend="event-trigger-definition"> for more information
+      on event names.
      </para>
     </listitem>
    </varlistentry>
@@ -95,12 +70,11 @@ CREATE EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable>
     <term><replaceable class="parameter">filter_variable</replaceable></term>
     <listitem>
      <para>
-      The name of a variable used to filter events, allowing to control
-      which cases must be handled by the trigger function. Currently the
-      only
-      provided <replaceable class="parameter">filter_variable</replaceable>
-      is named <literal>TAG</literal> and contains the command tag for which
-      the trigger is about to fire.
+      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 suppoted
+      <replaceable class="parameter">filter_variable</replaceable>
+      is <literal>TAG</literal>.
      </para>
     </listitem>
    </varlistentry>
@@ -109,364 +83,10 @@ CREATE EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable>
     <term><replaceable class="parameter">filter_value</replaceable></term>
     <listitem>
      <para>
-      A list of values that the
+      A list of values for the
       associated <replaceable class="parameter">filter_variable</replaceable>
-      can have to allow for the trigger to fire.
-     </para>
-     <para>
-      The <literal>TAG</literal> variable accepts the following values:
-     </para>
-     <informaltable id="supported-command-tags">
-      <tgroup cols="2">
-       <thead>
-        <row>
-         <entry>command tag</entry>
-         <entry>supported events, in order</entry>
-        </row>
-       </thead>
-       <tbody>
-        <row>
-         <entry align="left"><literal>ALTER AGGREGATE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER COLLATION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER CONVERSION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER DOMAIN</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER EXTENSION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER FOREIGN DATA WRAPPER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER FOREIGN TABLE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER FUNCTION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER LANGUAGE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER OPERATOR</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER OPERATOR CLASS</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER OPERATOR FAMILY</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER SCHEMA</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER SEQUENCE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER SERVER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER TABLE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER TEXT SEARCH CONFIGURATION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER TEXT SEARCH DICTIONARY</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER TEXT SEARCH PARSER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER TEXT SEARCH TEMPLATE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER TRIGGER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER TYPE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER USER MAPPING</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>ALTER VIEW</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CLUSTER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE AGGREGATE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE CAST</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE COLLATION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE CONVERSION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE DOMAIN</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE EXTENSION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE FOREIGN DATA WRAPPER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE FOREIGN TABLE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE FUNCTION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE INDEX</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE LANGUAGE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE OPERATOR</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE OPERATOR CLASS</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE OPERATOR FAMILY</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE RULE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE SCHEMA</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE SEQUENCE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE SERVER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE TABLE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE TABLE AS</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE TEXT SEARCH CONFIGURATION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE TEXT SEARCH DICTIONARY</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE TEXT SEARCH PARSER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE TEXT SEARCH TEMPLATE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE TRIGGER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE TYPE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE USER MAPPING</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>CREATE VIEW</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP AGGREGATE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP CAST</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP COLLATION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP CONVERSION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP DOMAIN</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP EXTENSION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP FOREIGN DATA WRAPPER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP FOREIGN TABLE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP FUNCTION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP INDEX</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP LANGUAGE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP OPERATOR</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP OPERATOR CLASS</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP OPERATOR FAMILY</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP RULE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP SCHEMA</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP SEQUENCE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP SERVER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP TABLE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP TEXT SEARCH CONFIGURATION</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP TEXT SEARCH DICTIONARY</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP TEXT SEARCH PARSER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP TEXT SEARCH TEMPLATE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP TRIGGER</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP TYPE</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP USER MAPPING</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>DROP VIEW</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>LOAD</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>REINDEX</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>SELECT INTO</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-        <row>
-         <entry align="left"><literal>VACUUM</literal></entry>
-         <entry align="left"><literal>command_start</literal></entry>
-        </row>
-       </tbody>
-      </tgroup>
-     </informaltable>
-     <para>
-      That list is also the list of supported commands on which you can
-      attach an event trigger.
+      for which the trigger should fire.  For <literal>TAG</>, this means a
+      list of command tags (e.g. <literal>'DROP FUNCTION'</>).
      </para>
     </listitem>
    </varlistentry>
@@ -476,7 +96,7 @@ CREATE EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable>
     <listitem>
      <para>
       A user-supplied function that is declared as taking no argument and
-      returning type <literal>event trigger</literal>.
+      returning type <literal>event_trigger</literal>.
      </para>
      <para>
       If your event trigger is implemented in <literal>C</literal> then it
@@ -490,24 +110,20 @@ CREATE EVENT TRIGGER <replaceable class="PARAMETER">name</replaceable>
   </variablelist>
  </refsect1>
 
- <refsect1 id="SQL-CREATEEVENTTRIGGER-notes">
+ <refsect1 id="sql-createeventtrigger-notes">
   <title>Notes</title>
 
   <para>
    To create a trigger on a event, the user must be superuser.
   </para>
-
-  <para>
-   Use <xref linkend="sql-dropeventtrigger"> to remove a event trigger.
-  </para>
  </refsect1>
 
- <refsect1 id="SQL-CREATEEVENTTRIGGER-examples">
+ <refsect1 id="sql-createeventtrigger-examples">
   <title>Examples</title>
 
   <para>
-   Forbids the execution of any command supported by the event trigger
-   mechanism, which includes all commands listed above:
+   Forbid the execution of any command supported by the event trigger
+   mechanism:
 
 <programlisting>
 CREATE OR REPLACE FUNCTION abort_any_command()
@@ -547,13 +163,12 @@ $$;
   </para>
  </refsect1>
 
- <refsect1 id="SQL-CREATEEVENTTRIGGER-compatibility">
+ <refsect1 id="sql-createeventtrigger-compatibility">
   <title>Compatibility</title>
 
   <para>
-   <command>CREATE EVENT TRIGGER</command> is a
-   <productname>PostgreSQL</productname> extension of the <acronym>SQL</>
-   standard.
+   There is no <command>CREATE EVENT TRIGGER</command> statement in the
+   SQL standard.
   </para>
 
  </refsect1>
diff --git a/doc/src/sgml/ref/drop_event_trigger.sgml b/doc/src/sgml/ref/drop_event_trigger.sgml
index 6b30dd9..86f9628 100644
--- a/doc/src/sgml/ref/drop_event_trigger.sgml
+++ b/doc/src/sgml/ref/drop_event_trigger.sgml
@@ -29,8 +29,9 @@ DROP EVENT TRIGGER [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceabl
   <title>Description</title>
 
   <para>
-   <command>DROP EVENT TRIGGER</command> removes an existing trigger definition.
-   To execute this command, the current user must be superuser.
+   <command>DROP EVENT TRIGGER</command> removes an existing event trigger.
+   To execute this command, the current user must be the owner of the event
+   trigger.
   </para>
  </refsect1>
 
@@ -79,7 +80,7 @@ DROP EVENT TRIGGER [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceabl
   </variablelist>
  </refsect1>
 
- <refsect1 id="SQL-DROPEVENTTRIGGER-examples">
+ <refsect1 id="sql-dropeventtrigger-examples">
   <title>Examples</title>
 
   <para>
@@ -90,13 +91,14 @@ DROP EVENT TRIGGER snitch;
 </programlisting></para>
  </refsect1>
 
- <refsect1 id="SQL-DROPEVENTTRIGGER-compatibility">
+ <refsect1 id="sql-dropeventtrigger-compatibility">
   <title>Compatibility</title>
 
   <para>
-   The <command>DROP EVENT TRIGGER</command> statement is a
-   <productname>PostgreSQL</productname> extension.
+   There is no <command>DROP EVENT TRIGGER</command> statement in the
+   SQL standard.
   </para>
+
  </refsect1>
 
  <refsect1>
diff --git a/doc/src/sgml/trigger.sgml b/doc/src/sgml/trigger.sgml
index 32994b9..f579340 100644
--- a/doc/src/sgml/trigger.sgml
+++ b/doc/src/sgml/trigger.sgml
@@ -27,24 +27,6 @@
    plain SQL function language.
   </para>
 
-  <para>
-   <productname>PostgreSQL</productname> offers both triggers on commands
-   (see <xref linkend="ddl">) and triggers on data manipulation
-   (see <xref linkend="dml">).
-  </para>
-
-  <sect1 id="command-triggers">
-   <title>Overview of Event Trigger Behavior</title>
-
-   <para>
-    A trigger is a specification that the database should automatically
-    execute a particular function whenever a certain command is performed.
-    The whole set of <productname>PostgreSQL</productname> commands is not
-    supported for triggers, see <xref linkend="sql-createeventtrigger">
-    for details.
-   </para>
-  </sect1>
-
   <sect1 id="trigger-definition">
    <title>Overview of Trigger Behavior</title>