FirebirdSQL logo
 VIEWPROCEDURE 

CREATE TRIGGER

Назначение

Создание нового триггера.

Доступно в

DSQL, ESQL

Синтаксис
CREATE TRIGGER trigname {
    <relation_trigger_legacy>
  | <relation_trigger_sql2003>
  | <database_trigger>
  | <ddl_trigger> }
<routine body>

<relation_trigger_legacy> ::=
  FOR {tablename | viewname}
  [ACTIVE | INACTIVE]
  {BEFORE | AFTER} <mutation_list>
  [POSITION number]

<relation_trigger_sql2003> ::=
  [ACTIVE | INACTIVE]
  {BEFORE | AFTER} <mutation_list>
  ON {tablename | viewname}
  [POSITION number]

<database_trigger> ::=
  [ACTIVE | INACTIVE]
  ON db_event
  [POSITION number]

<ddl_trigger> ::=
  [ACTIVE | INACTIVE]
  {BEFORE | AFTER} <ddl_events>
  [POSITION number]

<mutation_list> ::= <mutation> [OR <mutation> [OR <mutation>]]

<mutation> ::=  INSERT | UPDATE | DELETE

<db_event> ::=
    CONNECT | DISCONNECT
  | TRANSACTION {START | COMMIT | ROLLBACK}


<ddl_events> ::= {
    ANY DDL STATEMENT
  | <ddl_event_item> [{OR <ddl_event_item>} ...]
}

<ddl_event_item> ::=
    {CREATE | ALTER | DROP} TABLE
  | {CREATE | ALTER | DROP} PROCEDURE
  | {CREATE | ALTER | DROP} FUNCTION
  | {CREATE | ALTER | DROP} TRIGGER
  | {CREATE | ALTER | DROP} EXCEPTION
  | {CREATE | ALTER | DROP} VIEW
  | {CREATE | ALTER | DROP} DOMAIN
  | {CREATE | ALTER | DROP} ROLE
  | {CREATE | ALTER | DROP} SEQUENCE
  | {CREATE | ALTER | DROP} USER
  | {CREATE | ALTER | DROP} INDEX
  | {CREATE | DROP} COLLATION
  | ALTER CHARACTER SET
  | {CREATE | ALTER | DROP} PACKAGE
  | {CREATE | DROP} PACKAGE BODY
  | {CREATE | ALTER | DROP} MAPPING

<routine-body> ::=
    <psql-routine-spec>
  | <external-routine-spec>

<psql-routine-spec> ::=
  [<rights-clause>] <psql-routine-body>


<rights-clause> ::=
  SQL SECURITY {DEFINER | INVOKER}

<psql-routine-body> ::=
  См. Синтаксис тела модуля

<external-routine-spec> ::=
  <external-routine-reference>
  [AS <extbody>]

<external-routine-reference> ::= EXTERNAL NAME <extname> ENGINE <engine>

<extname> ::= '<module-name>!<routine-name>[!<misc-info>]'
Table 1. Параметры оператора CREATE TRIGGER
Параметр Описание

trigname

Имя триггера.Может содержать до 63 символов.

relation_trigger_legacy

Объявление табличного триггера (унаследованное).

relation_trigger_sql2003

Объявление табличного триггера согласно стандарту SQL-2003.

database_trigger

Объявление триггера базы данных.

ddl_trigger

Объявление DDL триггера.

tablename

Имя таблицы.

viewname

Имя представления.

mutation_list

Список событий таблицы.

mutation

Одно из событий таблицы.

db_event

Событие соединения или транзакции.

ddl_events

Список событий изменения метаданных.

ddl_event_item

Одно из событий изменения метаданных.

number

Порядок срабатывания триггера.От 0 до 32767.

extbody

Тело внешнего триггера. Строковый литерал который можетиспользоваться UDR для различных целей.

module-name

Имя внешнего модуля.

routine-name

Имя точки входа внутри модуля.

misc-info

Различная информация используемая внешним триггером по своемуусмотрению.

Оператор CREATE TRIGGER создаёт новый триггер.Триггер может быть создан для события (или событий) отношения (таблицы или представления), для события (событий) изменения метаданных или для одного из событий базы данных.

Оператор CREATE TRIGGER, как и его родственники ALTER TRIGGER, CREATE OR ALTER TRIGGER и RECREATE TRIGGER являются составными операторами, содержащими заголовок и тело.

Заголовок определяет имя триггера, а также содержит имя отношения (для табличных триггеров), фазу триггера, событие (или события) на которые срабатывает триггер и позицию.Имя триггера должно быть уникальным среди имён других триггеров.

Привилегии выполнения

Необязательное предложение SQL SECURITY позволяет задать с какими привилегиями выполняется триггер.Если выбрана опция INVOKER, то триггер выполняется с привилегиями вызывающего пользователя.Если выбрана опция DEFINER, то триггер выполняется с привилегиями определяющего пользователя (владельца). Эти привилегии будут дополнены привилегиями выданные самому триггеру с помощью оператора GRANT.По умолчанию триггер наследует привилегии выполнения указанные для таблицы.Триггера на события базы данных по умолчанию выполняются с привилегиями определяющего пользователя (владельца).