SQL standard only allows one. If a
trigger is defined to fire on multiple events, it is represented as
multiple rows in the information schema, one for each type of
event. As a consequence of these two issues, the primary key of
the view <literal>triggers</literal> is really
<literal>(trigger_catalog, trigger_schema, event_object_table,
trigger_name, event_manipulation)</literal> instead of
<literal>(trigger_catalog, trigger_schema, trigger_name)</literal>,
which is what the SQL standard specifies. Nonetheless, if you
define your triggers in a manner that conforms with the SQL
standard (trigger names unique in the schema and only one event
type per trigger), this will not affect you.
</para>
<note>
<para>
Prior to <productname>PostgreSQL</productname> 9.1, this view's columns
<structfield>action_timing</structfield>,
<structfield>action_reference_old_table</structfield>,
<structfield>action_reference_new_table</structfield>,
<structfield>action_reference_old_row</structfield>, and
<structfield>action_reference_new_row</structfield>
were named
<structfield>condition_timing</structfield>,
<structfield>condition_reference_old_table</structfield>,
<structfield>condition_reference_new_table</structfield>,
<structfield>condition_reference_old_row</structfield>, and
<structfield>condition_reference_new_row</structfield>
respectively.
That was how they were named in the SQL:1999 standard.
The new naming conforms to SQL:2003 and later.
</para>
</note>
</sect1>
<sect1 id="infoschema-udt-privileges">
<title><literal>udt_privileges</literal></title>
<para>
The view <literal>udt_privileges</literal> identifies
<literal>USAGE</literal> privileges granted on user-defined types to a
currently enabled role or by a currently enabled role. There is one row for
each combination of type, grantor, and grantee. This view shows only
composite types (see under <xref linkend="infoschema-user-defined-types"/>
for why); see
<xref linkend="infoschema-usage-privileges"/> for domain privileges.
</para>
<table>
<title><structname>udt_privileges</structname> Columns</title>
<tgroup cols="1">
<thead>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
Column Type
</para>
<para>
Description
</para></entry>
</row>
</thead>
<tbody>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>grantor</structfield> <type>sql_identifier</type>
</para>
<para>
Name of the role that granted the privilege
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>grantee</structfield> <type>sql_identifier</type>
</para>
<para>
Name of the role that the privilege was granted to
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>udt_catalog</structfield> <type>sql_identifier</type>
</para>
<para>
Name of the database containing the type (always the current database)
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>udt_schema</structfield> <type>sql_identifier</type>
</para>
<para>
Name of the schema containing the type
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>udt_name</structfield> <type>sql_identifier</type>
</para>
<para>
Name of the type
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>privilege_type</structfield> <type>character_data</type>
</para>
<para>