Trigger

Um TRIGGER, ou gatilho, é um objeto de banco de dados, associado a uma tabela, definido para ser disparado, respondendo a um evento em particular. Tais eventos são os comandos DML (Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE.

Podemos definir inúmeros TRIGGERS em uma base de dados baseados diretamente em qual dos comandos acima irá dispará-lo, sendo que, para cada um, podemos definir apenas um TRIGGER. Os TRIGGERS poderão ser disparados para trabalharem antes ou depois do evento.

Sintaxe para a criação de um Trigger:

CREATE TRIGGER nome //Define o nome da trigger
BEFORE/AFTER INSERT/DELETE/UPDATE ON tabela //Define o que será feito na tabela e quando
   FOR EACH ROW //"para cada linha" - o trigger age linha por linha dentro da tabela
    BEGIN
     //Comandos SQL
    END

No MySQL os tipos de triggers suportados são “BEFORE” ou “AFTER”. O BEFORE dispara e executa a ação do trigger antes do comando DML ser executado por completo e o AFTER faz isso depois.

A operação são os comandos DML, ou seja, os comandos INSERT, REPLACE, DELETE ou UPDATE.

Veja um exemplo de trigger que faz o backup de um usuário deletado na tabela:

CREATE TRIGGER backup_usuarios 
   BEFORE DELETE ON usuarios //dispara antes (BEFORE) de deletar na tabela     
   FOR EACH ROW
   BEGIN //Grava na tabela de backup os dados antes da exclusão (OLD)
      INSERT INTO bkp_usuarios 
      VALUES (Null, OLD.idUsuario, OLD.Nome) //"Null" por causa do campo da chave primária
   END

No exemplo acima, temos uma trigger de nome “backup_usuarios” que grava na tabela “bkp_usuarios” o ID e o nome dos usuários excluídos da tabela “usuarios”. OLD traz as informações antes de serem apagadas (que estão na tabela). Já NEW traz os valores depois de gravados na tabela.

Para disparar o trigger acima basta fazer uma operação de exclusão na tabela “usuarios”.

Para excluir o trigger criado acima, execute o comando DROP TRIGGER backup_usuarios.

Para visualizar as triggers criadas, execute o comando SHOW TRIGGERS.

Veja as diretrizes de usos de NEW, OLD, INSERT, DELETE e UPDATE:

INSERT: O operador NEW.nome_coluna, permite verificar o valor enviado para ser inserido em uma coluna de uma tabela. OLD.nome_coluna não está disponível.

DELETE: O operador OLD.nome_coluna nos permite verificar o valor excluído ou a ser excluído. NEW.nome_coluna não está disponível.

UPDATE: Tanto OLD.nome_coluna quanto NEW.nome_coluna estão disponíveis, antes (BEFORE) ou depois (AFTER) da atualização de uma linha.

Ao inserirmos uma nova linha em uma tabela, temos os valores das colunas disponível através do operador NEW.nome_coluna, quando excluímos uma linha, temos ainda os valores das colunas da linha excluída através do operador OLD.nome_coluna.

Conheça o curso de Segurança em Redes de Computadores e entenda os diversos tipos de ataques que existem, bem como as peças do quebra-cabeça que integram a defesa de uma rede, entre elas: Firewall, IPS, Proxy, Anti-Spam, Anti-vírus, Anti-Malware, VPN, Sandboxing, NAC, etc.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS DETALHES:

CLIQUE AQUI E SAIBA MAIS

Manutenção de servidores MySQL

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
 https://youtube.com/criandobits

Tags: | |

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *