Banco de dados: Trigger, o que é isso?

[ads2]

Você sabe o que é Trigger? Já ouviu falar disso?

Trigger é um objeto de banco de dados que é associado a uma tabela para ser disparado. Ele usa DML (Data Manipulation Language) que são INSERT, REPLACE, DELETE ou UPDATE. Você pode usar estes comandos para disparar o Trigger e usá-lo para executar comandos em outras tabelas do banco de dados, etc.

Um exemplo prático

Imaginemos um programa de vendas, onde você tem duas tabelas:
PRODUTOS:
Com os campos: id, produto, preco, estoque:

CREATE TABLE PRODUTOS(
id int auto_increment primary key,
produto char(80) not null,
preco double not null,
estoque double not null
)Engine=MyIsam;

PEDIDOS:
Com os campos: id,datapedido, id_produto,preco, qt:

CREATE TABLE PEDIDOS(
 id int auto_increment primary key,
 datapedido date not null,
 id_produto int not null,
 preco double not null,
 qt double not null 
)Engine=MyIsam

Ok, então a cada item inserido na tabela PEDIDOS você precisaria diminuir a quantidade de estoque na tabela PRODUTOS. Normalmente usaríamos a linguagem de programação para fazer isso, e com isso, dependendo do tamanho do sistema e das SQL usadas, poderíamos perder em desempenho. Por isso usamos Trigger que trabalha diretamente no banco de dados. Para que isso aconteça usamos o seguinte código:

CREATE TRIGGER nome_da_trigger 
AFTER INSERT ON pedidos FOR EACH ROW 
BEGIN UPDATE produtos SET estoque=estoque-new.qt where id=new.id_produto END; 

Separei o comando em linhas para o entendimento ficar mais fácil.
Na linha 1 o que temos é a criação da Trigger
Na linha 2, definimos quando a trigger será adicionada: AFTER (depois) que INSERT(inserir) ON(na) tabela pedidos;
Na linha 2, FOR EACH ROW quer dizer: para cada linha, ou seja para cada nova inserção;
Na linha 3, a partir do BEGIN (Início) será executado o nosso comando que dá um UPDATE na tabela produtos decrementando a quantidade no estoque;

É isso ai galera, espero que tenha ficado claro. Qualquer dúvida ou sugestão deixe um comentário!

#miserere
[ads1]

Jayr Alencar

Doutorando em Ciências da Computação no Centro de Informática da Universidade Federal do Pernambuco (CIn - UFPE); Mestre pela mesma instituição; Formado em Análise e Desenvolvimento de Sistemas; Católico; Fã de O Senhor do Anéis.

Deixe um comentário

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


Deprecated: Creation of dynamic property Daisy_Blog_Google_Local::$files is deprecated in /home2/clube692/public_html/wp-content/themes/daisy-blog/inc/blocks/font-family/inc/class-fonts-google-local.php on line 77

Deprecated: Creation of dynamic property Daisy_Blog_Google_Local::$files is deprecated in /home2/clube692/public_html/wp-content/themes/daisy-blog/inc/blocks/font-family/inc/class-fonts-google-local.php on line 77