Вопрос:
Я написал триггер перед вставкой и после триггера вставки в одной таблице в MySQL. Но один из триггеров автоматически заменяется, когда я помещаю другой триггер. Если я помещаю после триггера вставки, то перед вставкой триггерного кода автоматически заменяется.
Обратите внимание, что он удаляется, или вы можете удалить код.
Оба они отдельно работают нормально. Пожалуйста, помогите мне в этом.
Лучший ответ:
У вас может быть триггер BEFORE INSERT и триггер AFTER INSERT. Он находится в документации. У вас может быть только один из них – например, вы не можете иметь два (или три или четыре) триггера BEFORE INSERT.
Если ваш триггер AFTER INSERT уничтожает триггер BEFORE INSERT, то два триггера, вероятно, имеют одинаковое имя. Убедитесь, что у каждого есть уникальное имя.
Ответ №1
До MySQL 5.7.2
У вас может быть только один триггер для каждой таблицы и триггер события и время действия. Например, возможно иметь
- один BEFORE UPDATE и один AFTER UPDATE или
- один BEFORE UPDATE и один BEFORE INSERT
триггер на таблице. Но вы можете иметь триггеры, которые выполняют несколько операторов, используя BEGIN … END. Подробнее см. MySQL 5.6 Documentation.
С MySQL 5.7.2
Нет никаких ограничений на количество триггеров для таблицы. Кроме того, можно определить порядок обработки триггеров с помощью ключевых слов PRECEDES и FOLLOWS. Подробнее см. MySQL 5.7 Documentation.