2014-08-22 9:43 GMT-03:00 [email protected] <[email protected]>:

> Eu trabalho bastante com views gravadas no banco de dados, toda vez que
> preciso aumentar o tamanho de uma coluna, eu preciso excluir as views que
> contem aquela tabela e depois recriar com a mesma estrutura que estavam.
>
> Como não existe nenhuma alteração efetivamente na view, não tem como dar o
> alter column ou alterar a coluna sem que eu tenha que excluir as views e
> recriá-las?
>


Vejo duas soluções para o seu caso:

1. Não use colunas (ao menos varchar, para numeric pode não ser tão
simples) com limite de tamanho. Caso esse limite seja realmente uma regra
de negócio, você pode adicionar uma constraint CHECK na tabela delimitando
esse tamanho, daí ao alterar o limite basta alterar a constraint CHECK, que
não terá dependências (por outro lado alterá-la vai sempre requirir uma
verificação completa da tabela). No PostgreSQL o limite de tamanho não
ajuda em nada em termos de otimização ou espaço, é apenas uma verificação
na inserção ou alteração de um registro, ou seja, os tipos `text`,
`varchar` e `varchar(n)` são idênticos, mas o último faz uma validação.

2. Na definição da view, faça uma conversão explícita (cast) dos campos
para um tipo sem limite de tamanho. Assim você não precisa recriar a
tabela, mas ainda assim terá que alterar a view para não ter consulta
envolvendo a tabela ou ao menos o campo (troque os campos por NULL::tipo),
altere a tabela, e restaure a consulta original da view (não é difícil
criar um script que faça isso "automagicamente").

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a