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