Gostaria de 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 soltar e recriá-lo.
Quais são as melhores práticas na administração de banco de dados para esses cenários?
Respostas:
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 perde 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 sugeriria que a melhor prática é bloquear a tabela onde o gatilho mora, para que nenhuma linha seja impactada com o gatilho ausente. É permitido soltar e adicionar gatilhos enquanto uma tabela está bloqueada.
Atualização: O MariaDB, na versão 10.1.4, adicionou suporte
CREATE OR REPLACE TRIGGER
ao seu substituto para o MySQL.https://mariadb.com/kb/en/mariadb/create-trigger/
O MySQL da Oracle a partir da versão 5.7 ainda conta com a solução acima.
fonte