La respuesta es no .
No agregue un modificador de longitud varchar
si puede evitarlo. La mayoría de las veces, en realidad no necesita una restricción de longitud. Solo utilícelo text
para todos los datos de los personajes. Haga eso varchar
(sin modificador de longitud) si necesita mantenerse compatible con RDBMS que no tiene text
.
El rendimiento es casi el mismo: text
es un poco más rápido en situaciones excepcionales y guarda los ciclos para verificar la longitud.
Si realmente necesita imponer una longitud máxima, aún use text
y agregue una restricción de verificación para eso:
ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 51);
Puede modificar o eliminar dicha restricción en cualquier momento sin tener que meterse con la definición de la tabla y todos los objetos dependientes (vistas, funciones, teclas foráneas, ...)
Con los modificadores de longitud simplemente te encuentras con problemas como este o esto o esto ...
PostgreSQL 9.1 introdujo una nueva característica para aliviar un poco el dolor. Cito las notas de la versión aquí :
Permitir ALTER TABLE ... SET DATA TYPE
evitar reescrituras de tablas en casos apropiados (Noah Misch, Robert Haas)
Por ejemplo, convertir una varchar
columna en texto ya no requiere una reescritura de la tabla. Sin embargo, aumentar la restricción de longitud en una
varchar
columna aún requiere una reescritura de la tabla.