Criando Trigger no MySQL em poucos minutos
Aprenda o que é o recurso avançado Trigger e como criar na prática utilizando o gerenciador de banco de dados Oracle MySQL.
PUBLICADO POR AYLTON INACIO
Tutoriais e Artigos > Gerenciamento de dados
E aí pessoal, blz? Hoje é dia de falar sobre Triggers no MySQL, não só falar, mas também fazer, pois você vai por a mão na massa e criar as suas, deixando seu banco de dados muito mais inteligente.
A ideia do tutorial é mostrar de um jeito prático como as Triggers podem ser úteis no seu banco MySQL, então eu imagino que você já tem algum conhecimento sobre a ferramenta. Se não tiver, não esquenta não, dá pra acompanhar também, pois eu vou passar pelas partes mais básicas, só que de um jeito rápido.
O que é Trigger?
Pra começar, vamos ver o que o Wikipédia diz sobre isso:
"Gatilho ou trigger é um recurso de programação executado sempre que o evento associado ocorrer. Trigger é um tipo especial de procedimento armazenado, que é executado sempre que há uma tentativa de modificar os dados de uma tabela que é protegida por ele."
Bom gente, basicamente é isso aí mesmo. Uma trigger fica atenta o tempo todo, só esperando que um evento específico ocorra pra entrar em ação, por isso chamamos de Trigger ou Gatilho, em português.
Sobre os eventos, eles são relacionados com alterações nas tabelas, como inserções ou exclusões, por exemplo. Você pode configurar uma Trigger pra se executar sempre que um registro for alterado numa tabela, isso é bem útil pra criar histórico de alterações.
Criando a sua Trigger no MySQL
Bom gente, chega de falar e vamos fazer! A ideia é criar um banco simples de tudo, com duas tabelas, sendo uma delas
chamada produtos
e a outra historico_preco_produtos
.
O objetivo do banco é armazenar dados de produtos, qualquer produto, e também gravar o histórico de preços de cada um, como o Buscapé faz. Isso é bem bacana pra fazer um estudo de dados lá no futuro, dentro de um projeto de Business Intelligence.
Prefere acompanhar em vídeo?
Tá com preguiça de ler o tutorial? Blz, tem o vídeo sobre Trigger completo aqui! Ah, não tá com preguiça não? Então segue comigo na leitura!
1- Você já tem o MySQL instalado?
Pra começar, você precisa do MySQL rodando na sua máquina. Você pode fazer isso instalando somente o MySQL ou se quiser facilitar, coloca o XAMPP que já vem também com PHP e servidor Web Apache.
Só pra lembrar, hoje o MySQL é mantido pela Oracle, mas existe também o Maria DB, que é mantido pelos caras que fizeram o MySQL, lá atrás. Na prática são praticamente iguais, então o XAMPP coloca na sua máquina o Maria DB, que funciona como o MySQL, entendeu?
2- O MySQL Workbench
Já o MySQL Workbench serve pra você acessar o serviço do MySQL e gerenciar os seus bancos de dados, sem precisar utilizar códigos SQL, isso para as alterações mais comuns. Você vai ver que para fazer Trigger, é preciso colocar SQL na mão.
Você só precisa criar uma conexão local com o seu banco, como na imagem anterior, lembrando que por padrão, não existe senha! Isso é um perigo né? Mas relaxa, tá local, só não vai fazer isso em produção.
2- Criando o banco MySQL
Agora é hora de criar o banco de dados, que pode ter qualquer nome, no meu caso coloquei produtos
.
3- Criando a tabela de produtos
Agora é a vez da tabela de produtos, que deve ter os campos id
, nome
e preco
, seguindo as configurações da imagem a seguir.
Importante lembrar que o campo id
é chave-primária, ou seja, identifica de forma única cada registro, e ele
também é auto increment.
Sobre os tipos de dados, repare também que você deve utilizar os corretos, sendo INT para o campo id
, VARCHAR para o nome
e por último, FLOAT para o preco
, pois isso aqui é dinheiro!
3- Criando a tabela de histórico
A tabela historico_preco_produtos
deve ter os campos id
, data
, id_produto
, valor_anterior
e valor_novo
, de acordo com as
configurações da imagem a seguir.
Mais uma vez, fique de olho nas características dos campos, onde também existe o campo id
para identificar cada registro.
Sobre os outros, eles armazenam a data da alteração de preço do produto identificado pelo id
, e também os dois valores em
questão, o antigo e o atual.
4- Inserindo dados de produtos
Pra gente testar nossa Trigger depois de pronta, é preciso ter alguns produtos cadastrados ou um, pelo menos.
5- Criando a Trigger
Agora, chegou a hora de criar a sua Trigger! Então, é só clicar com o botão direito sobre a tabela produtos
, depois em
alter table
, e por último em Triggers.
Dá só uma olhada nas opções de eventos disponíveis:
- Before insert (Antes de inserir)
- After insert (Depois de inserir)
- Before update (Antes de atualizar)
- After update (Depois de atualizar)
- Before delete (Antes de apagar)
- After delete (Depois de apagar)
Pra fazer a sua Trigger, é só passar o mouse sobre AFTER UPDATE
e depois no botão de +, que aparece no canto. Se alguma
alteração no produto for feita, ele vai executar a Trigger para registrar a mudança de preço, se existir.
Olha só a nossa Trigger como tem que ficar.
O código SQL é bem simples, onde no começo tem toda a parte de identificação da Trigger e quando ela será executada. E entre
as marcações BEGIN
e END
temos o código que faz toda a mágica que precisamos.
É importante que você entenda o básico de SQL, linguagem utilizada para manipular o banco de dados MySQL. Ao utilizar o Workbench, praticamente você não precisa ficar inserindo códigos, ele faz pra você, mas na Trigger não tem jeito, é preciso por código na mão, pois aí já é programação.
A mágica que digo é, pra começar, verificar se o preço novo é diferente do antigo, pois só precisamos gravar no histórico se forem diferentes, certo? Esse teste é necessário, pois pode acontecer uma alteração no nome do produto, e pra gente só importa alteração no preço.
IF NEW.preco <> OLD.preco THEN
INSERT INTO historico_preco_produtos VALUES (NULL,NOW(),NEW.id,OLD.preco,NEW.preco);
END IF;
Repare nas palavras mágicas NEW
e OLD
, ou seja, novo e velho.
Sendo os preços diferentes, agora é só inserir os dados na tabela historico_preco_produtos
através do SQL básico de INSERT
,
com NULL
para o campo id
, que é auto increment. Depois a função NOW()
retorna a data atual com a hora, aí temos o id
do produto
com o seu preço antigo (OLD)
e também com o preço novo (NEW)
.
6- Testando a sua Trigger
Bom gente, chegou a hora de testar tudo que foi feito e isso vai ser bem simples, certo? É só pegar algum produto
cadastrado, lá na tabela produtos
e alterar o preço.
Depois é só ir lá na tabela historico_preco_produtos
e verificar o histórico de mudaças. Agora é contigo! Pode fazer
várias mudanças de preço e até mesmo só do nome do produto, assim você vai reparar que o histórico só é gravado
com ALTERAÇÃO DE PREÇO, somente isso.
Conclusão
Ufa! Foi um tutorial rápido, mas bem interessante, pois trabalhamos com um recurso avançado do MySQL, mas claro, através de um exemplo bem simples. O importante é que você tenha entendido o propósito de uma Trigger e como ela pode ser utilizada.
Sendo assim, agora é contigo! Você pode criar Triggers muito mais complexas, mas isso pede um conhecimento mais avançado sobre SQL, então fique de olho aqui no site que vou colocar muito assunto sobre isso.
Então é isso, eu espero que você tenha gostado desta publicação. Fique à vontade para compartilhar nas suas redes sociais para ajudar na divulgação e crescimento do site.
Aproveite para se inscrever no meu canal do YouTube e também na News do site pra ficar por dentro das novidades em artigos, tutoriais e cursos online.
Abraço e até a próxima!