Triggers - это функции обратного вызова базы данных, которые автоматически выполняются/вызывается, когда происходит указанное событие базы данных. Ниже приведены важные моменты о триггерах SQLite:
- Триггер SQLite может указываться для запуска при каждом
DELETE, INSERT
илиUPDATE
конкретной таблицы базы данных или всякий раз, когдаUPDATE
встречается в одном или нескольких указанных столбцах таблицы. - В настоящее время SQLite поддерживает только триггеры
FOR EACH ROW
, а не триггерыEACH STATEMENT
. Следовательно, явно указыватьFOR EACH ROW
необязательно. - Предложение
WHEN
и триггерные действия могут обращаться к элементам строки, которые вставляются, удаляются или обновляются с использованием ссылок формыNEW.column-nameи OLD.column-name
, гдеcolumn-name
- это имя столбца из таблицу, с которой связан триггер. - Если предоставляется предложение
WHEN
, указанные операторы SQL выполняются только для строк, для которых предложениеWHEN
истинно. Если предложениеWHEN
не предоставляется, операторы SQL выполняются для всех строк. - Ключевое слово
BEFORE
илиAFTER
определяет, когда будут выполняться действия триггера относительно вставки, изменения или удаления соответствующей строки. - Триггеры автоматически отбрасываются при удалении таблицы, с которой они связаны.
- Таблица, подлежащая изменению, должна существовать в той же базе данных, что и таблица или представление, к которой подключен триггер, и нужно использовать только имя_таблицы, а не
database.tablename.
- Специальная функция
SQL RAISE()
может использоваться в триггерной программе для создания исключения.
CREATE TRIGGER trigger_name [BEFORE|AFTER] event_name
ON table_name
BEGIN
-- Trigger logic goes here....
END;
Здесь event_name
может быть операцией INSERT, DELETE
и UPDATE
в указанной таблице table_name
. Вы можете указать опцию FOR EACH ROW
после имени таблицы. Ниже приведен синтаксис создания триггера в операции UPDATE
на одном или нескольких указанных столбцах таблицы.
CREATE TRIGGER trigger_name [BEFORE|AFTER] UPDATE OF column_name
ON table_name
BEGIN
-- Trigger logic goes here....
END;
Сбрасывание триггеров
Ниже приведена команда DROP, которая может использоваться для удаления существующего триггера.
sqlite> DROP TRIGGER trigger_name;
0 комментариев