38.53. triggers
Представление triggers
показывает все триггеры, определённые в текущей базе данных для таблиц и представлений, к которым имеет доступ текущий пользователь (являясь владельцем или имея некоторые права, кроме SELECT
).
Таблица 38.51. Столбцы triggers
Тип столбца Описание |
---|
Имя базы данных, содержащей триггер (всегда текущая база) |
Имя схемы, содержащей триггер |
Имя триггера |
Событие, вызывающие срабатывание триггера ( |
Имя базы данных, содержащей таблицу, для которой определён триггер (всегда текущая база) |
Имя схемы, содержащей таблицу, для которой определён триггер |
Имя таблицы, для которой определён триггер |
Порядок срабатывания триггеров, имеющих одинаковые свойства |
Условие |
Оператор, выполняемый триггером (в настоящее время всегда |
Определяет, срабатывает ли триггер для каждой обрабатываемой строки или только для каждого оператора ( |
Момент срабатывания триггера ( |
Имя «старой» переходной таблицы либо NULL, если её нет |
Имя «новой» переходной таблицы либо NULL, если её нет |
Относится к функциональности, отсутствующей в Postgres Pro |
Относится к функциональности, отсутствующей в Postgres Pro |
Относится к функциональности, отсутствующей в Postgres Pro |
Триггеры в Postgres Pro несовместимы со стандартом в двух аспектах, которые влияют на их представление в информационной схеме. Во-первых, имена триггеров являются локальными для каждой таблицы в Postgres Pro, а не независимыми объектами схемы. Таким образом, в одной схеме могут быть дублирующиеся имена триггеров, если они принадлежат разным таблицам. (Значения trigger_catalog
и trigger_schema
на самом деле относятся к таблице, для которой определён триггер.) Во-вторых, триггеры в Postgres Pro могут срабатывать при нескольких событиях (например, ON INSERT OR UPDATE
), тогда как стандарт SQL допускает только одно событие. Если триггер настроен на несколько событий, он представляется в информационной схеме в виде нескольких строк, по одной для каждого типа события. Вследствие этих двух особенностей, первичный ключ в представлении triggers
на самом деле (trigger_catalog, trigger_schema, event_object_table, trigger_name, event_manipulation)
, а не (trigger_catalog, trigger_schema, trigger_name)
, как должно быть согласно стандарту SQL. Однако если определять триггеры в строгом соответствии со стандартом SQL (чтобы имена триггеров были уникальны в схеме и каждый триггер связывался только с одним событием), это расхождение никак не проявится.
Примечание
До PostgreSQL 9.1 в этом представлении столбцы action_timing
, action_reference_old_table
, action_reference_new_table
, action_reference_old_row
и action_reference_new_row
назывались condition_timing
, condition_reference_old_table
, condition_reference_new_table
, condition_reference_old_row
и condition_reference_new_row
, соответственно. Старые имена были продиктованы стандартом SQL:1999. Новые имена соответствуют стандарту SQL:2003 и более поздним.