Boa tarde.
Obrigado a todos que responderam.

Com a consulta abaixo, consigo  o nome da tabela, o nome do campo chave e o 
nome da sequência:
--------------------------------------------------
SELECT relname as tabela,substring(
trim(both ' ' from
substr( substring(adsrc,10,char_length(adsrc)-21), 
strpos(substring(adsrc,10,char_length(adsrc)-21),'_') + 1,
 char_length(adsrc)- 21
) ) ,1 ,
char_length(trim(both ' ' from
substr( substring(adsrc,10,char_length(adsrc)-21), 
strpos(substring(adsrc,10,char_length(adsrc)-21),'_') + 1,
 char_length(adsrc)- 21
) )) - 4)::char(50) as nomechave
 ,
  substring(adsrc,10,char_length(adsrc)-21) as seq

 FROM pg_class 
JOIN pg_attrdef ON pg_class.oid=pg_attrdef.adrelid 
where adsrc like'%_seq%'
ORDER BY relname
----------------------------------------------------

Já tentei obter o valor da sequência com last_value e curval mas não obtive 
sucesso.
Como consigo obter o valor máximo com  ' select max (campo_chave) from 
nometabela ' 
e o valor atual da sequence??

att
Fernando







Date: Wed, 19 Aug 2009 17:10:21 -0300
From: [email protected]
To: [email protected]
Subject: Re: [pgbr-geral] atualizar todas as sequences do banco de dados

Olá, Fernando

Segue um caminho das pedras :)

SELECT relname,substring(adsrc,10,char_length(adsrc)-21) AS 
nome_da_sequencia,currval(substring(adsrc,10,char_length(adsrc)-21)) FROM 
pg_class JOIN pg_attrdef ON pg_class.oid=pg_attrdef.adrelid ORDER BY relname;


Agora o resto é com você e falta pouco :)

PS: Fiz na correria, talvez não seja a solução mais adequada.

2009/8/19 Fernando de Oliveira <[email protected]>






Olá,

Exemplo:

tabela pessoa
--------------------
codigo           serial
nome             char
codfunc         int

tabela funcao

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

codfuncao           serial

descricao             char


Preciso de uma consulta que tenha estas informações:
nome_tabela    nome_campo_chave    nome_sequence    valor_sequence    
valor_maximo_campo_tabela    precisa_atualizar_sequenc



Porque preciso disso?
Após fazer conversão de dados, aproveito as chaves antigas, entao preciso 
atualizar minhas sequences para o novo valor máximo.


att
Fernando


Date: Wed, 19 Aug 2009 15:46:37 -0300

From: [email protected]
To: [email protected]
Subject: Re: [pgbr-geral] atualizar todas as sequences do banco de dados


Olá,

2009/8/19 Fernando de Oliveira <[email protected]>






Boa tarde a todos!

Estou precisando atualizar o valor atual de todas as sequences do banco ( De 
acordo com o máximo na tabela ).

Consigo listar elas com:

SELECT (relname) from pg_class where relkind='S' ;

 

Minhas dúvidas são:

A) Como listar o valor atual de todas elas? 

SELECT relname,currval(quote_ident(relname)) FROM pg_class WHERE relkind='S';

B) Como eu relaciono a sequence à tabela e ao campo?



Não entendi.

att
Fernando

Novo Internet Explorer 8: mais rápido e muito mais seguro. Baixe agora, é 
grátis!



_______________________________________________

pgbr-geral mailing list

[email protected]

https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres


Novo Internet Explorer 8: mais rápido e muito mais seguro. Baixe agora, é 
grátis!


_______________________________________________

pgbr-geral mailing list

[email protected]

https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres

_________________________________________________________________
Emoticons e Winks super diferentes para o Messenger. Baixe agora, é grátis!
http://specials.br.msn.com/ilovemessenger/pacotes.aspx
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a