A resposta é não .
Não adicione um modificador de comprimento varchar
se puder evitá-lo. Na maioria das vezes, você realmente não precisa de uma restrição de comprimento. Basta usar text
para todos os dados de caracteres. Faça isso varchar
(sem modificador de comprimento) se precisar permanecer compatível com RDBMS que não possui text
.
O desempenho é quase o mesmo - text
é um pouco mais rápido em situações raras , e você salva os ciclos para verificar a duração.
Se você realmente precisa aplicar um tamanho máximo, ainda use text
e adicione uma restrição de verificação para isso:
ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 51);
Você pode modificar ou eliminar essa restrição a qualquer momento, sem precisar mexer na definição da tabela e em todos os objetos dependentes (visualizações, funções, chaves estrangeiras, ...)
Com modificadores de comprimento, você apenas encontra problemas como este ou isto ou isto ...
O PostgreSQL 9.1 introduziu um novo recurso para aliviar um pouco a dor. Cito as notas de lançamento aqui :
Permitir ALTER TABLE ... SET DATA TYPE
evitar a reescrita da tabela nos casos apropriados (Noah Misch, Robert Haas)
Por exemplo, converter uma varchar
coluna em texto não requer mais uma reescrita da tabela. No entanto, aumentar a restrição de comprimento em uma
varchar
coluna ainda requer uma reescrita da tabela.