Bóson Treinamentos em Ciência e Tecnologia

Triggers em MySQL – Definição, Sintaxe e Criação – 44

MySQL - Triggers – Definição, Sintaxe e Criação

Triggers em MySQL

Neste artigo vamos introduzir o conceito de triggers em MySQL, com exemplos de código e aplicações.

O que é um Trigger SQL?

Um trigger (“gatilho”) é um objeto programável do banco de dados associado a uma tabela. Trata-se de um procedimento que é invocado automaticamente quando um comando DML é executado na tabela, sendo executado para cada linha afetada. Desta forma, as operações que podem disparar um trigger são:

Geralmente, os triggers são empregados para verificar integridade dos dados, fazer validação dos dados e outras operações relacionadas.

Diferença entre Trigger e Procedimento Armazenado

Tanto os triggers quanto as stored procedures são objetos programáveis de um banco de dados. Porém, eles possuem diferenças importantes entre si, que afetam o modo como são aplicados. Algumas das principais diferenças entre trigger e procedimentos armazenados são:

Aplicações dos triggers

As principais aplicações dos triggers em bancos de dados são:

Modos de Disparo de um Trigger

Um Trigger em MySQL pode ser disparado de dois modos diferentes:

Sintaxe para criação de um trigger em MySQL

Para criar um trigger em MySQL usamos a seguinte sintaxe:

CREATE TRIGGER nome timing operação
ON tabela
FOR EACH ROW
declarações

Onde:

Exemplo

Neste exemplo criaremos uma tabela chamada Produto, que conterá os seguintes dados:

Logo após criaremos um trigger de nome tr_desconto, cuja função será aplicar um valor de desconto de 10% à coluna Preco_Desconto quando for disparado. Ou seja, todos os produtos terão seu preço reduzido em 10% nesta coluna. O trigger será disparado ao inserir um novo registro na tabela, o que faremos no passo 3. Veja o código completo do exercício a seguir:

-- 1. Criar a tabela de exemplo:
CREATE TABLE Produto (
idProduto INT NOT NULL AUTO_INCREMENT,
Nome_Produto VARCHAR(45) NULL,
Preco_Normal DECIMAL(10,2) NULL,
Preco_Desconto DECIMAL(10,2) NULL,
PRIMARY KEY (idProduto));

-- 2. Criar o Trigger:
CREATE TRIGGER tr_desconto BEFORE INSERT
ON Produto
FOR EACH ROW
SET NEW.Preco_Desconto = (NEW.Preco_Normal * 0.90);

-- 3. Executar uma inserção que irá disparar o Trigger:
INSERT INTO Produto (Nome_Produto, Preco_Normal)
VALUES ("DVD", 1.00), ("Pendrive", 18.00);

-- 4. Verificar se trigger foi disparado observando o preço com desconto:
SELECT * FROM Produto;

Como excluir um trigger

Para excluir um trigger em MySQL usamos a declaração DROP TRIGGER, seguida do nome do trigger, como no exemplo:

DROP TRIGGER tr_desconto;

Saiba mais sobre triggers em MySQL assistindo ao vídeo a seguir:

 

Sair da versão mobile