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
