Olá,

Em 13 de maio de 2011 11:02, Emerson Martins
<[email protected]>escreveu:

> 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!
>

Se for para agendar você pode colocar no cron do usuário postgres ou ainda
usar o PgAgent para fazer o agendamento de jobs.

Agora a questão da função ter que ser disparada por um trigger não sei se é
necessário. Acredito que simplesmente pode ser executada de tempos em tempos
e verificar se a seqüencia realmente precisa ser alterada.


> 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
>
>

Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a