1
resposta

[Dúvida] Como criar trigger

O código:

CREATE TRIGGER CalculaFaturamentoDiario
AFTER INSERT ON itenspedidos
FOR EACH ROW
BEGIN
DELETE FROM FaturamentoDiario
INSERT INTO FaturamentoDiario (Dia, FaturamentoTotal)
SELECT DATE(datahorapedido) AS Dia, SUM(ip.precounitario) AS FaturamentoDiario
FROM pedidos p
JOIN itenspedidos ip
ON p.id = ip.idpedido
GROUP BY Dia
ORDER BY Dia
END;

Está dando erro no meu SQLite, não sei o por que fiz igual a instrutora. Poderia me ajudar?

1 resposta

Oii, Gustavo! Como está?

Agradeço por aguardar o nosso retorno.

Você está no caminho certo, vamos revisar alguns pontos para ajustar para que funcione. Teste usar o seguinte código:

CREATE TRIGGER CalculaFaturamentoDiarioFaturamentoDiario
AFTER INSERT ON ItensdePedido
FOR EACH ROW
BEGIN
    DELETE FROM FaturamentoDiario;
    INSERT INTO FaturamentoDiario (Dia, FaturamentoTotal)
    SELECT DATE(p.datahorapedido) AS Dia, SUM(ip.precounitario) AS FaturamentoDiario
    FROM pedidos p
    JOIN ItensdePedidos ip ON p.id = ip.idpedido
    GROUP BY Dia
    ORDER BY Dia;
END;

No código acima, foi adicionado um ponto e vírgula (;) na instrução dentro do bloco, pois a criação do Trigger é sensível à sintaxe e é preciso utilizá-lo. Outro ajuste foi o nome das tabelas, que ao checar o arquivo vi que estavam escritas de forma diferente. Exemplo: no código está itenspedidos. E no arquivo: ItensdePedido.

Captura de tela do Sqlite Online, mostrando a trigger criada após rodar o código descrito anteriormente.

Realize o teste e observe se funciona como esperado, espero que sim! Qualquer dúvida, conte conosco.

Bons estudos e até mais!