1
resposta

Consolidando o conhecimento de triggers

Afim de poder botar em prática os conhecimentos adquiridos no curso, fiz uma pequena trigger para pegar informações sobre a venda, baseado nas tabelas notas, vendedores, itens_notas e clientes segue abaixo o código e comentários:

/* Criação da tabela tb_descricao_venda
Baseado nas tabelas criadas e populadas no curso, o objetivo da tabela/trigger é
1 - indicar quem foi o vendedor - matricula e nome
2 - indicar quem foi o cliente - cpf e nome
3 - data e hora da venda
4 - indicar a quantidade e o valor pago*/

/* Criação da tabela com os campos */
create table tb_descricao_venda (
    id_descricao_venda int auto_increment,
    matricula_vendedor varchar(5),
    nome_vendedor varchar(100),
    cpf_cliente varchar(11),
    nome_cliente varchar(100),
    data_hora_venda timestamp,
    quantidade_produtos int,
    preco_unitario float,
    preco_total float,
    primary key(id_descricao_venda)    
);

/* mudança do delimitador */
delimiter $

/* Criação da trigger */
create trigger tg_descreve_venda after insert on notas
for each row BEGIN

insert into tb_descricao_venda
select null id_descricao,
       ve.matricula as matricula_vendedor,
       ve.nome as nome_vendedor,
       cli.cpf as cpf_cliente,
       cli.nome as nome_cliente,
       current_timestamp() as data_hora_venda,
       it.quantidade as quantidade_produtos,
       it.preco as preco_unitario,
       it.preco * it.quantidade as preco_total
  from notas nt
 inner join vendedores ve
    on nt.matricula = ve.matricula  
 inner join clientes cli
    on cli.cpf = nt.cpf
 inner join itens_notas it
    on nt.numero = it.numero;  

end$

/* volta do delimitador para ; */
delimiter ;


/* inserção de valores nas tabelas de itens_notas e notas */
insert into itens_notas values(1005, '1040107', 500, 45);
insert into notas values(1005, '2022-09-19', '19290992743', '00237', 0.06);

/* query para provar que a trigger funcionou */
select * from tb_descricao_venda;

A saída foi isso: ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Sei que o foco do curso não é ter esse tipo de correção, mas o fiz assim mesmo para poder me aprofundar um pouco

1 resposta

Olá, Bruno, tudo bem?

Desde já peço desculpas pela demora em obter retorno.

Bruno, que legal que para aprofundar seus conhecimentos você criou uma trigger, é muito importante praticarmos os conhecimentos que aprendemos no curso.

Analisei seu código e está certinho, parabéns!

Continue com essa dedicação aos estudos, que você vai longe!

Caso surja alguma dúvida, estarei à disposição.

Abraços e até mais!