Мне интересно, если можно обновить определение триггера в MySQL. Например, у меня есть триггер T, и я хочу добавить к нему новые функции.
Я предполагаю, что мне нужно сбросить и воссоздать его.
Каковы лучшие практики в администрировании базы данных для таких сценариев?
Ответы:
Похоже, вы спрашиваете, возможно ли изменить триггер в атомарной операции, где, если новое определение не удается, вы не потеряете старое ... похоже на
CREATE OR REPLACE VIEW
, которое заменяет определение представления, если новое определение действителен, но оставляет старый на месте, если вы не можете заменить его.К сожалению, нет
ALTER TRIGGER
илиCREATE OR REPLACE TRIGGER
в MySQL.Я хотел бы предложить, чтобы лучше всего было блокировать таблицу, в которой находится триггер, чтобы никакие строки не затрагивались при отсутствии триггера. Разрешается удаление и добавление триггеров, когда таблица заблокирована.
Обновление: MariaDB, в версии 10.1.4, добавила поддержку
CREATE OR REPLACE TRIGGER
их замены в MySQL.https://mariadb.com/kb/en/mariadb/create-trigger/
Oracle MySQL с версии 5.7 по-прежнему опирается на решение выше.
источник