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.
CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS DETALHES:
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
Sobre o Autor
0 Comentários