Eu estou querendo saber se é possível atualizar uma definição de gatilho no MySQL. Por exemplo, eu tenho um gatilho T e quero adicionar algumas novas funcionalidades a ele.
Minha suposição é que eu preciso largar e recriá-lo.
Quais são as melhores práticas na administração de banco de dados para tais cenários?
Parece que você está perguntando se é possível alterar um gatilho em uma operação atômica, onde, se a nova definição falhar, você não perderá a antiga ... semelhante a
CREATE OR REPLACE VIEW
, que substitui a definição de exibição se a nova definição é válido, mas deixa o antigo no lugar, se você não puder substituí-lo.Infelizmente, não existe
ALTER TRIGGER
ouCREATE OR REPLACE TRIGGER
no MySQL.Eu sugiro que a melhor prática seja bloquear a tabela onde o gatilho reside, para que nenhuma linha seja afetada com o gatilho ausente. É permitido descartar e adicionar gatilhos enquanto uma tabela está bloqueada.
Atualização: MariaDB, na versão 10.1.4, adicionou suporte
CREATE OR REPLACE TRIGGER
à substituição do MySQL.https://mariadb.com/kb/en/mariadb/create-trigger/
O MySQL da Oracle a partir de 5.7 ainda conta com a solução acima.
Como @Michael disse, você não pode alterar o gatilho.
Se você estiver usando o MySql Workbench , ele pode criar o drop e criar statments para você. Clique com o botão direito do mouse no nome da sua tabela e clique na opção Alter table a partir daí você pode escolher a opção Trigger e alterá-la. Embora você não possa executá-lo a partir da consulta.
Table Name --> Right click --> Alter Table --> Out of 6 Tabs pick Triggers
.Espero que isto ajude.