Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Dúvida no código, utilizando o PostgreSQL

Estou utilizando o PostgreSQL, mas no código que a instrutora mostrou, está dando um erro como segue abaixo:

create trigger CalculaFaturamentodiario
after insert on itens_pedidos
for each row
BEGIN
delete from faturamento_diario;
insert into faturamento_diario (dia,faturamentototal)
select date(p.data_hora_pedido) as dia, sum(ip.preco_unitario) as FaturamentoDiario
from pedidos as p
join itens_pedidos as ip
on p.id_pedido = ip.id_pedido
group by dia
order by dia;
END;
ERROR:  erro de sintaxe em ou próximo a "BEGIN"
LINE 4: BEGIN
        ^ 

ERRO:  erro de sintaxe em ou próximo a "BEGIN"
SQL state: 42601
Character: 97
1 resposta
solução!

Oii, Felipe! Como vai?

Esse erro ocorreu porque no PostgreSql a sintaxe é um pouco diferente e pode retornar erros como este. Veja abaixo um exemplo de código que podemos testar:

create trigger CalculaFaturamentodiario
after insert on itens_pedidos
for each row
execute procedure calcula_faturamento_diario();

create or replace function calcula_faturamento_diario()
returns trigger as $$
BEGIN
    delete from faturamento_diario;
    insert into faturamento_diario (dia, faturamentototal)
    select date(p.data_hora_pedido) as dia, sum(ip.preco_unitario) as FaturamentoDiario
    from pedidos as p
    join itens_pedidos as ip
    on p.id_pedido = ip.id_pedido
    group by dia
    order by dia;
    return NEW;
END;
$$ LANGUAGE plpgsql;

O exemplo acima cria um trigger que, após a inserção de um item na tabela itens_pedidos, executa uma função chamada calcula_faturamento_diario(). A função limpa os dados da tabela faturamento_diario e a preenche com o faturamento diário total, calculado a partir da soma dos preços unitários dos itens pedidos, agrupados por dia.

Segue alguns links para te auxiliar nos estudos sobre a sintaxe no PostgreSQL.

As páginas estão em inglês, caso não tenha familiaridade, clique com o botão direito do mouse em qualquer canto da página e selecione traduzir para o português.

Espero ter ajudado. Continue estudando e praticando as atividades para se desenvolver.

Até mais, Felipe!