





Триггер - это именованный объект базы данных, связанный с таблицей и активируемый, когда для таблицы происходит определенное событие.
Для создания триггера:
CREATE TRIGGER triggerName [BEFORE|AFTER] [INSERT|UPDATE|DELETE|REPLACE] ON tableName FOR EACH ROW SET stuffToDoHERE;
Несмотря на то, что я ответил на эту часть, другой вопрос все еще в силе.
От dev.mysql.com триггер
...a named database object that is associated with a table and that is activated when a particular event occurs for the table.
Синтаксис для их создания также задокументировано на этом сайте.
Вкратце,
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
И они приводят пример:
CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
CREATE TRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum = @sum + NEW.amount;
По крайней мере, вам нужно соблюдать все ограничения на сохраненные функции. Вы не сможете блокировать таблицы, изменять представления или изменять таблицу, вызвавшую срабатывание триггера. Также запускает может вызвать проблемы с репликацией.
Триггеры позволяют выполнять функцию в базе данных при возникновении определенных событий (например, вставка в таблицу).
Я не могу конкретно комментировать mysql.
Меры предосторожности: триггеры могут быть очень заманчивыми, когда вы впервые начинаете их использовать, они кажутся волшебной пулей для всех видов проблем. Но они делают "волшебные" вещи, если вы не знаете базу данных наизнанку, может показаться, что происходят действительно странные вещи (например, вставки в другие таблицы, изменение входных данных и т. д.). Прежде чем реализовывать вещи в качестве триггера, я бы серьезно подумал о том, чтобы вместо этого принудительно использовать API вокруг схемы (желательно в базе данных, но вне, если вы не можете).
Для некоторых вещей я бы все еще использовал триггеры
Вещи, для которых вы не хотели бы использовать триггеры
Этот вопрос старый, а другие ответы очень хорошие, но поскольку пользователь спросил о мерах предосторожности, которые следует предпринять, я хочу кое-что добавить: