Триггеры могут вызывать бесконечные петли, поэтому будьте осторожны.

шал о триггерах, и у меня есть несколько вопросов.
Какие триггеры?
Как мне их настроить?
Существуют ли какие-либо меры предосторожности, кроме типичных для SQL, которые следует принять?

Ответы на вопрос(3)

который связан с таблицей и который активируется, когда для таблицы происходит определенное событие.

Чтобы создать триггер:

CREATE TRIGGER triggerName [BEFORE|AFTER] [INSERT|UPDATE|DELETE|REPLACE] ON tableName FOR EACH ROW SET stuffToDoHERE;


Хотя я и ответил на эту часть, другой вопрос остается в силе.

Решение Вопроса

пределенных событий (например, вставка в таблицу).

Я не могу комментировать MySQL конкретно.

Меры предосторожности: Триггеры могут быть очень заманчивыми, когда вы впервые начинаете использовать их, они кажутся волшебной пулей для всех видов проблем. Но они заставляют происходить «волшебные» вещи, если вы не знаете базу данных наизнанку, может показаться, что происходят действительно странные вещи (такие как вставки в другие таблицы, изменение входных данных и т. Д.). Перед реализацией вещей как триггера я бы серьезно подумал о том, чтобы вместо этого принудительно использовать API вокруг схемы (желательно в базе данных, но снаружи, если вы не можете).

Некоторые вещи, которые я бы по-прежнему использовал для запуска

Отслеживание полей "date_created" и "date_last_edited"Вставка идентификаторов (в оракуле, где нет поля автоматического идентификатора)Ведение истории изменений

Вещи, которые вы не хотели бы использовать триггеры для

бизнес-правила / логикавсе, что подключается за пределами базы данных (например, вызов веб-службы)Контроль доступаВсе, что не является транзакционным (все, что вы делаете в триггере, ДОЛЖНО иметь возможность отката с транзакцией)

dev.mysql.comтриггер

... именованный объект базы данных, связанный с таблицей и активируемый, когда для таблицы происходит определенное событие.

Синтаксис для их созданиятакже задокументировано на этом сайте.

Коротко говоря,

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;

Вы по крайней мере должны соблюдатьвсе ограничения на хранимые функции, Вы не сможете заблокировать таблицы, изменить представления или изменить таблицу, вызвавшую срабатывание триггера. Также запускаетможет вызвать проблемы с репликацией.

Ваш ответ на вопрос