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;