Мы можем иметь несколько триггеров в одной таблице в mysql

Вопрос:Я написал триггер перед вставкой и после триггера вставки в одной таблице в MySQL. Но один из триггеров автоматически заменяется, когда я помещаю другой триггер. Если я помещаю после триггера вставки, то перед вставкой триггерного кода автоматически заменяется. Обратите внимание, что он удаляется, или вы можете удалить код. Оба они отдельно работают нормально. Пожалуйста, помогите

Вопрос:

Я написал триггер перед вставкой и после триггера вставки в одной таблице в 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.

Оцените статью
Добавить комментарий