[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]