Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] Erro de sintaxe

Boa noite.

Estou com um problema na aula de criação de triggers no curso "Realizando consultas SQL: Joins, Views e transações".

Antes da criação da trigger a professora nos instrui a criar uma tabela e inserir dados da seguinte forma:

CREATE TABLE FaturamentoDiario ( Dia DATE, FaturamentoTotal DECIMAL(10, 2) );

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;

Eu fiz com algumas pequenas mudanças, mas até então não tive problema na criação da tabela e inserção de dados, segue meu modo de escrita:

IMeu codigo

Entretanto, quando vou criar a trigger o sqilte me retorna erro de sintaxe, porém eu apenas dou CTRL C e CTRL V do comando feito anteriormente e adiciono os comandos de TRIGGER, segue imagem abaixo:

Meu codigo com erroErro

Solicito uma ajuda por favor, obrigado.

2 respostas
solução!

Olá, Felipe, tudo bem?

No SQLite, cada comando dentro de um bloco BEGIN ... END deve ser separado por ponto e vírgula (;). Então, peço que teste o código abaixo:

CREATE TRIGGER CalculaFaturamentoDiario
AFTER INSERT ON ItensDePedido
FOR EACH ROW
BEGIN
    DELETE FROM FaturamentoDiario;
    INSERT INTO FaturamentoDiario (Dia, FaturamentoTotal)
    SELECT DATE(datahorapedido) AS Dia, SUM(ip.Preco_Unitario) AS FaturamentoDiario
    FROM pedidos p
    INNER JOIN ItensDePedido ip ON p.Id = ip.Id_Pedido
    GROUP BY Dia
    ORDER BY Dia;
END;

Certifique sempre de que cada comando dentro do BEGIN ... END termina com ;.

Espero que dê certo!

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Monalisa, funcionou perfeitamente.

Muito obrigado mesmo.