2011-11-21 9 views
28

Espero que esta pregunta no se haya hecho antes. ¿Alguien sabe el límite de caracteres para los nombres de dominio? Por ejemplo si escribo esto:Caracteres máximos en etiquetas (nombres de tabla, columnas, etc.)

CREATE DOMAIN d_complement_activite_etablissement AS character varying 

se creará un dominio con el nombre:

d_complement_activite_etabliss 

(Sí, ya sé cómo contar, pero quiero algo más de información sobre el tema) .

¿Hay algún comando que pueda cambiar esta longitud máxima? ¿Es esta longitud la misma para otros nombres (columnas, tablas, etc.)?

Respuesta

43

Usted pregunta:

¿Hay un comando que puede cambiar esta longitud máxima? ¿Es esta longitud lo mismo para otros nombres (columnas, tablas, etc.)?

El manual answers here:

El sistema utiliza no más de NAMEDATALEN-1 bytes de un identificador; los nombres más largos se pueden escribir en comandos, pero se truncarán. Por defecto, NAMEDATALEN es 64, por lo que la longitud máxima del identificador es bytes. Si este límite es problemático, puede plantearse cambiando la constante NAMEDATALEN en src/include/pg_config_manual.h.

Bold emphasis mine.

Lo que significa que la única forma de cambiarlo es piratear el código fuente y volver a compilar PostgreSQL.
Los nombres de dominio son identificadores como cualquier otro. Cuando ejecuto:

CREATE DOMAIN d_complement_activite_etablissement_or_even_loger_than_that AS text 

consigo lo que pedí (solo probado en PostgreSQL 8.4 y 9.0; 9.1 no es diferente aquí):

d_complement_activite_etablissement_or_even_loger_than_that 

Ergo: debe haber alguna otra pieza de recorte de software tu nombre.

+0

hmm ... eso es extraño. Ahora funciona para mí también. Uso Postgre 9.1 y ejecuté el comando desde pgAdmin. Gracias –

+1

@FlorinVistig: El Editor de SQL de pgAdmin tiene una buena característica: cuando seleccionas parte del código antes de ejecutarlo, solo se ejecuta la ** parte seleccionada **, ignorando todo lo demás. Usted es consciente de eso, ¿verdad? Parece que tropezaste con eso. –

+0

No sabía acerca de esa característica. Pero he trabajado más en SQL Server donde existe esa característica, y sé que debo mantenerme alejado de ella. No sé cuál fue la razón ... –

Cuestiones relacionadas