No MySQL, um gatilho é um programa armazenado invocado automaticamente em resposta a um evento como insert , update ou delete que ocorre na tabela associada. Por exemplo, você pode definir um gatilho que é invocado automaticamente antes que uma nova linha seja inserida em uma tabela.
O MySQL suporta gatilhos que são invocados em resposta ao evento INSERT
ou .UPDATE
DELETE
O padrão SQL define dois tipos de gatilhos: gatilhos em nível de linha e gatilhos em nível de instrução.
- Um gatilho em nível de linha é ativado para cada linha inserida, atualizada ou excluída. Por exemplo, se uma tabela tiver 100 linhas inseridas, atualizadas ou excluídas, o gatilho será invocado automaticamente 100 vezes para as 100 linhas afetadas.
- Um gatilho em nível de instrução é executado uma vez para cada transação, independentemente de quantas linhas são inseridas, atualizadas ou excluídas.
MySQL suporta apenas gatilhos em nível de linha. Não oferece suporte a gatilhos em nível de instrução.
Vantagens dos gatilhos
- Os gatilhos fornecem outra maneira de verificar a integridade dos dados.
- Os gatilhos tratam de erros da camada de banco de dados.
- Os gatilhos oferecem uma maneira alternativa de executar tarefas agendadas . Ao usar gatilhos, você não precisa esperar a execução dos eventos agendados porque os gatilhos são invocados automaticamente antes ou depois de uma alteração ser feita nos dados de uma tabela.
- Os gatilhos podem ser úteis para auditar as alterações de dados nas tabelas.
Desvantagens dos gatilhos
- Os gatilhos só podem fornecer validações estendidas, não todas as validações. Para validações simples , você pode usar as restrições
NOT NULL
,UNIQUE
e .CHECK
FOREIGN KEY
- Os gatilhos podem ser difíceis de solucionar porque são executados automaticamente no banco de dados, que pode não ser visível para os aplicativos cliente.
- Os gatilhos podem aumentar a sobrecarga do servidor MySQL.
Gerenciando gatilhos MySQL
- Criar gatilhos – descreva as etapas de como criar um gatilho no MySQL.
- Soltar gatilhos – mostra como descartar um gatilho.
- Crie um gatilho BEFORE INSERT – mostra como criar um
BEFORE INSERT
gatilho para manter uma tabela de resumo de outra tabela. - Crie um gatilho AFTER INSERT – descreva como criar um
AFTER INSERT
gatilho para inserir dados em uma tabela após inserir dados em outra tabela. - Crie um gatilho BEFORE UPDATE – aprenda como criar um
BEFORE UPDATE
gatilho que valida os dados antes que eles sejam atualizados na tabela. - Crie um gatilho AFTER UPDATE – mostra como criar um
AFTER UPDATE
gatilho para registrar as alterações de dados em uma tabela. - Crie um gatilho BEFORE DELETE – mostre como criar um
BEFORE DELETE
gatilho. - Crie um gatilho AFTER DELETE – descreva como criar um
AFTER DELETE
gatilho. - Crie vários gatilhos para uma tabela que tenha o mesmo evento e hora de gatilho – o MySQL 8.0 permite que você defina vários gatilhos para uma tabela que tenha o mesmo evento e hora de gatilho.
- Mostrar gatilhos – lista os gatilhos em um banco de dados, tabela por padrões específicos.
Anterior