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: ![]( )
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