36.56. triggers
The view
triggers
contains all triggers defined
in the current database on tables and views that the current user owns
or has some privilege other than
SELECT
on.
Table 36.54.
triggers
Columns
Name | Data Type | Description |
---|---|---|
trigger_catalog
|
sql_identifier
|
Name of the database that contains the trigger (always the current database) |
trigger_schema
|
sql_identifier
|
Name of the schema that contains the trigger |
trigger_name
|
sql_identifier
|
Name of the trigger |
event_manipulation
|
character_data
|
Event that fires the trigger (
INSERT
,
UPDATE
, or
DELETE
)
|
event_object_catalog
|
sql_identifier
|
Name of the database that contains the table that the trigger is defined on (always the current database) |
event_object_schema
|
sql_identifier
|
Name of the schema that contains the table that the trigger is defined on |
event_object_table
|
sql_identifier
|
Name of the table that the trigger is defined on |
action_order
|
cardinal_number
|
Firing order among triggers on the same table having the same
event_manipulation
,
action_timing
, and
action_orientation
. In
PostgreSQL
, triggers are fired in name
order, so this column reflects that.
|
action_condition
|
character_data
|
WHEN
condition of the trigger, null if none
(also null if the table is not owned by a currently enabled
role)
|
action_statement
|
character_data
|
Statement that is executed by the trigger (currently always
EXECUTE FUNCTION
)
|
action_orientation
|
character_data
|
Identifies whether the trigger fires once for each processed
row or once for each statement (
ROW
or
STATEMENT
)
|
action_timing
|
character_data
|
Time at which the trigger fires (
BEFORE
,
AFTER
, or
INSTEAD OF
)
|
action_reference_old_table
|
sql_identifier
|
Name of the " old " transition table, or null if none |
action_reference_new_table
|
sql_identifier
|
Name of the " new " transition table, or null if none |
action_reference_old_row
|
sql_identifier
|
Applies to a feature not available in PostgreSQL |
action_reference_new_row
|
sql_identifier
|
Applies to a feature not available in PostgreSQL |
created
|
time_stamp
|
Applies to a feature not available in PostgreSQL |
Triggers in
PostgreSQL
have two
incompatibilities with the SQL standard that affect the
representation in the information schema. First, trigger names are
local to each table in
PostgreSQL
, rather
than being independent schema objects. Therefore there can be duplicate
trigger names defined in one schema, so long as they belong to
different tables. (
trigger_catalog
and
trigger_schema
are really the values pertaining
to the table that the trigger is defined on.) Second, triggers can
be defined to fire on multiple events in
PostgreSQL
(e.g.,
ON INSERT OR
UPDATE
), whereas the 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
triggers
is really
(trigger_catalog, trigger_schema, event_object_table,
trigger_name, event_manipulation)
instead of
(trigger_catalog, trigger_schema, trigger_name)
,
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.
Note
Prior to
PostgreSQL
9.1, this view's columns
action_timing
,
action_reference_old_table
,
action_reference_new_table
,
action_reference_old_row
, and
action_reference_new_row
were named
condition_timing
,
condition_reference_old_table
,
condition_reference_new_table
,
condition_reference_old_row
, and
condition_reference_new_row
respectively.
That was how they were named in the SQL:1999 standard.
The new naming conforms to SQL:2003 and later.