Oque é um trigger ?
Trigger é uma palavra da lingua inglesa que quer dizer “gatilho”, com isso, queremos dizer que a ação “gatilho” é usada para “disparar” eventos em sequencia, no nosso caso uma sequencia de eventos em nossa base de dados, no MySQL.
Como usar o trigger ?
O trigger é uma regra, e basicamente diz que, sempre que você executa uma ação em sua base de dados, seja esse comando para remover (DELETE), atualizar (UPDATE) ou inserir (INSERT), seu banco de dados deve executar uma tarefa vinculada a primeira. Por exemplo, supondo que seu sistema crie um registro (log) de cada ação que é executada pelo seu sistema, então devem ocorer duas ações para que você obtenha sucesso, sendo elas:
- Solicitação inicial
- Criação do log
Se realizarmos essa operação do modo convencional, devemos executar duas querys, a primeira onde você irá executar a ação solicitada pelo sistema e a segunda onde o item log é criado.
[php]mysql_query("UPDATE `tabela` SET produto = ‘informacao’ WHERE id = ‘id’");
mysql_query("INSERT INTO `log` ( id, date) VALUES ( mysql_insert_id(), now())")[/php]
Com isso, foram executadas duas interações entre seu código e o banco de dados para se obter o resultado esperado, já se utilizarmos um trigger, iremos executar somente uma requisição, porém, devemos criar a instrução que irá gerar a série de eventos:
[php] CREATE TRIGGER `databaseName`.`apos_atualizar_conteudo`
BEFORE UPDATE ON `tabela` FOR EACH ROW
BEGIN
INSERT INTO `log` ( id, date) VALUES ( NEW.id, now());
END[/php]
E só então executamos a query que irá dar inicio aos eventos.
[php]mysql_query("UPDATE tabela SET produto = ‘informacao’ WHERE id = ‘id’");[/php]
Dessa forma é adiciona uma pequena sobrecarga para a consulta inicial, porém, como estamos executando uma única query para fazer duas coisas distintas, há um ganho de desempenho global (pelo menos em teoria).
Vantagens da utilização do trigger
- O trigger fornece uma forma alternativa para verificar a integridade da sua base de dados.
- O trigger pode pegar os erros de lógica de negócio no nível de banco de dados.
- O trigger fornece uma forma alternativa de executar tarefas agendadas. Com trigger, você não tem que esperar para executar as tarefas agendadas. Você pode lidar com as tarefas antes ou após as alterações feitas para tabelas de banco de dados.
- O trigger é muito útil quando você usá-lo para auditar as alterações de dados em uma tabela do banco de dados.
Desvantagens do uso do trigger
- O trigger pode apenas fornecer validação estendida e não pode substituir todas as validações. Algumas validações simples pode ser feito em nível de aplicativo. Por exemplo, você pode validar verificar a entrada no lado cliente usando JavaScript ou no lado do servidor pelo script de servidor utilizando PHP ou ASP.NET.
- Triggers SQL executa invisível da aplicação cliente que se conecta ao servidor de banco de dados assim que é difícil descobrir o que aconteceu camada de banco de dados subjacente.
- O trigger executa todas as atualizações feitas na tabela, portanto, ele adiciona a carga de trabalho para o banco de dados e sistema de causa corre mais devagar.