Olá pessoal!

Tenho  seguinte duvida.Nosso banco de dados tem uma função que atualiza os
IDs de todas as tabelas..
Como sempre temos algumas importações previstas e imprevistas de outros
banco de Dados que estar em fase de migração.

Desenvolvemos a seguinte função!

CREATE OR REPLACE FUNCTION updatesequences()
  RETURNS character varying AS
$BODY$
declare
seqrecord record;
 maxrecord record;
maxvalue integer;
begin
for seqrecord in select relname,split_part(relname,'_id_seq',1) tabela, 'id'
coluna from pg_statio_user_sequences
              where relname not like 'audit_log_%'
              and relname not like 'auth_%'
             and relname not like 'django_%' Loop
 for maxrecord in execute 'select max(id) as f1 from ' || seqrecord.tabela
LOOP
maxvalue:=maxrecord.f1;
 end loop;
execute 'alter sequence ' || seqrecord.relname || ' restart with ' ||
coalesce(maxvalue,0)+1 ;
 End LOOP;
return 1;
end
$BODY$
  LANGUAGE plpgsql VOLATILE

Então..Preciso que essa função seja executada de tempos em tempo através de
trigger evitando problemas com as sequences que as vezes ficam
desatualizadas ou com uma  numeração errada!

Alguma sugestão!

Emerson Martins
Analista de Banco de Dados
82 9123-5504
82 9668-1283
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a