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
