On 21-08-2013 17:13, Guimarães Faria Corcete DUTRA, Leandro wrote:
2013/8/21 Bruno Silva <[email protected]>:

UPDATE pg_attribute SET atttypmod = <novo_tamanho>+4
WHERE attrelid = 'TABLE1'::regclass
AND attname = 'COL1';

De maneira geral, é uma limitação do PostgreSQL (e dos outros SGBDs)
que não se recomenda a alteração do catálogo.  Há um trabalho lento de
tornar o catálogo manipulável, mas não creio que a recomendação tenha
sido já alterada.

Mas é possível, e funciona.  Mas muito, muito cuidado.


Alterar o catálogo é muito perigoso, se vc fizer alguma alteração equivocada pode corromper o heap e inutilizar a tabela.

Eu utilizaria esse artificio de alterar o catálogo como ÚLTIMA ALTERNATIVA.

E como última alternativa, pelo menos para ser mais seguro, vc precisa antes obter um AccessExclusiveLock na relação e colocar isso tudo em uma transação, mas eu não faria dessa forma e sim como o Dutra falou abaixo.


De maneira geral, seria melhor usar uma consulta sobre o catálogo para
gerar um programeta SQL que fizesse as alterações.  Há vários exemplos
no arquivo da lista e na Teia; procure por algo como “SELECT 'DROP
VIEW”…


+1

Att,

--
   Fabrízio de Royes Mello         Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a