Sr.

Costumo dar cargas em massa com o comando copy em algumas tabelas do banco
aqui,

O problema é que as sequences não atualizam quando insiro dados desta forma


então pensei em fazer uma trigger para fazer esta atualização....


Com o comando:

SELECT setval('pac.pac_desembolso_obra_deob_id_seq', max(deob_id)) FROM
pac.pac_desembolso_obra;

eu consigo fazer esta atualização, o problema é que não estou conseguindo
fazer isso a partir de uma trigger


fiz assim:

create or replace function sequencia_desembolso_pac_embasa ()
    Returns trigger as  $$
begin

 SELECT setval('pac.pac_desembolso_obra_deob_id_seq', max(deob_id)) FROM
pac.pac_desembolso_obra;

end;
    $$ language PLPGSQL;

------------------------------------

CREATE TRIGGER t_sequencia_desembolso_pac_embasa
BEFORE INSERT ON pac.pac_desembolso_obra FOR EACH ROW ---> para cada linha
FOR EACH STATEMENT -> para cada comando
EXECUTE PROCEDURE sequencia_desembolso_pac_embasa()



----------------------

Quando executo acusa o seguinte erro:

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function "sequencia_desembolso_pac_embasa" line 3 at SQL
statement



repare que ele pede para eu descartar o resultado do select, mas eu quero
executá-lo

tentei colocoar o execute no lugar do select, e me acusou erro também.


Poderiam me indicar uma direção?

obrigado a todos.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a