Gatilhos MySQL

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 INSERTou .UPDATEDELETE

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, UNIQUEe .CHECKFOREIGN 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

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *