1
resposta

Pq nesse código o insert é inserido no itens notas e nao no faturamento?

DELIMITER //
CREATE TRIGGER TG_CALCULA_FATURAMENTO INTERT AFTER INSERT ON ITENS_NOTAS
FOR EACH ROW BEGIN 
DELETE FROM TAB_FATURAMENTO;
INSERT INTO TAB_FATURAMENTO
SELECT A.DAATA_VENDA, SUM(B.QUANTIDADE * B PRECO) 
AS TOTAL_VENDA FROM NOTAS AS A INNER JOIN ITENS_NOTAS B
ON A.NUMERO = B.NUMERO
GROUP BY A.DATA_VENDA;
END//
1 resposta

Oi, Vitor! Tudo certo?

Peço desculpas pela demora em retornar.

Parabéns pela construção do TRIGGER!

O único ponto de atenção é acerca da forma com que digitamos os comandos SQL. Durante esse processo, é de fundamental importância a análise do que estamos escrevendo, sempre verificando se a sintaxe (a escrita) está correta. Caso exista algum problema, possivelmente receberemos uma mensagem de erro, a qual nos auxiliará em sua solução.

Para conseguirmos executar o TRIGGER que você compartilhou, será necessário:

  • Substituir TG_CALCULA_FATURAMENTO INTERT por TG_CALCULA_FATURAMENTO_INSERT;
  • Remover uma das letras "A" do trecho A.DAATA_VENDA, deixando-o assim: A.DATA_VENDA;
  • Unir a letra "B" a PRECO por meio de um ponto, indicando que ele se trata de um atributo da tabela identificada por "B", desta forma: SUM(B.QUANTIDADE * B.PRECO).

Feito isso, chegaremos no seguinte TRIGGER:

DELIMITER //
CREATE TRIGGER TG_CALCULA_FATURAMENTO_INSERT2 AFTER INSERT ON ITENS_NOTAS
FOR EACH ROW BEGIN 
DELETE FROM TAB_FATURAMENTO;
INSERT INTO TAB_FATURAMENTO
SELECT A.DATA_VENDA, SUM(B.QUANTIDADE * B.PRECO) 
AS TOTAL_VENDA FROM NOTAS AS A INNER JOIN ITENS_NOTAS B
ON A.NUMERO = B.NUMERO
GROUP BY A.DATA_VENDA;
END//

Vitor, continue estudando e se dedicando. Fico à disposição para ajudar em caso de dúvidas.

Um forte abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software