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 комментариев