FirebirdSQL logo
 VIEWPROCEDURE 

Примеры

Example 1. Отключение (перевод в неактивное состояние) триггера
ALTER TRIGGER set_cust_no INACTIVE;
Example 2. Изменение позиции триггера
ALTER TRIGGER set_cust_no POSITION 14;
Example 3. Перевод триггера в неактивное состояние и изменение списка событий
ALTER TRIGGER TR_CUST_LOG
INACTIVE AFTER INSERT OR UPDATE;
Example 4. Изменение привилегий выполнения триггера

После выполнения данного оператора триггер будет выполняться с привилегиями определяющего пользователя (владельца).

ALTER TRIGGER TR_CUST_LOG
SQL SECURITY DEFINER;
Example 5. Удаление привилегий выполнения триггера

После удаления привилегий выполнения триггера, триггер выполняется с привилегиями унаследованными от таблицы.Если у таблицы не определены привилегии выполнения, то триггер будет выполняться с привилегиями вызывающего пользователя.

ALTER TRIGGER TR_CUST_LOG
DROP SQL SECURITY;
Example 6. Перевод триггера в активное состояние, изменение его позиции и его тела
ALTER TRIGGER tr_log_connect
ACTIVE POSITION 1
AS
BEGIN
  INSERT INTO LOG_CONNECT (ID,
                           USERNAME,
                           ROLENAME,
                           ATIME)
  VALUES (NEXT VALUE FOR SEQ_LOG_CONNECT,
          CURRENT_USER,
          CURRENT_ROLE,
          CURRENT_TIMESTAMP);
END

CREATE OR ALTER TRIGGER

Назначение

Создание нового или изменение существующего триггера.

Доступно в

DSQL, ESQL

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

Полное описание оператора см. CREATE TRIGGER.

Оператор CREATE OR ALTER TRIGGER создаёт новый триггер, если он не существует, или изменяет и перекомпилирует его в противном случае, при этом существующие права и зависимости сохраняются.

docnext count = 6

Примеры

Example 1. Создание нового или изменение существующего триггера
CREATE OR ALTER TRIGGER set_cust_no
ACTIVE BEFORE INSERT ON customer POSITION 0
AS
BEGIN
  IF (NEW.cust_no IS NULL) THEN
    NEW.cust_no = GEN_ID(cust_no_gen, 1);
END

DROP TRIGGER

Назначение

Удаление существующего триггера.

Доступно в

DSQL, ESQL

Синтаксис
DROP TRIGGER trigname
Table 1. Параметры оператора DROP TRIGGER
Параметр Описание

trigname

Имя триггера.

Оператор DROP TRIGGER удаляет существующий триггер.

Кто может удалить триггеры?

DML триггеры могут удалить:

  • Администраторы

  • Владелец таблицы (представления);

  • Пользователи с привилегией ALTER ANY {TABLE | VIEW}.

Триггеры для событий базы данных и триггеры событий на изменение метаданных могут удалить:

  • Администраторы

  • Владелец базы данных;

  • Пользователь, имеющий привилегию ALTER DATABASE.

Примеры

Example 1. Удаление триггера
DROP TRIGGER set_cust_no;
См. также:

CREATE TRIGGER, ALTER TRIGGER.

RECREATE TRIGGER

Назначение

Создание нового или пересоздание существующего триггера.

Доступно в

DSQL, ESQL

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

Полное описание оператора см. CREATE TRIGGER.

Оператор RECREATE TRIGGER создаёт новый триггер, если триггер с указанным именем не существует, в противном случае оператор RECREATE TRIGGER попытается удалить его и создать новый.

Примеры

Example 1. Создание или пересоздание триггера
RECREATE TRIGGER set_cust_no
ACTIVE BEFORE INSERT ON customer POSITION 0
AS
BEGIN
  IF (NEW.cust_no IS NULL) THEN
    NEW.cust_no = GEN_ID(cust_no_gen, 1);
END