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!