2011-11-21 10 views
28

Spero che questa domanda non sia stata posta prima. Qualcuno conosce il limite di caratteri per i nomi di dominio? Per esempio, se scrivo questo:Numero massimo di caratteri nelle etichette (nomi di tabelle, colonne, ecc.)

CREATE DOMAIN d_complement_activite_etablissement AS character varying 

creerà un dominio con il nome:

d_complement_activite_etabliss 

(Sì, lo so come contare, ma voglio un po 'di informazioni su questo argomento) .

Esiste un comando che può modificare questa lunghezza massima? Questa lunghezza è uguale per altri nomi (colonne, tabelle, ecc.)?

risposta

43

Tu chiedi:

C'è un comando che può cambiare questa lunghezza massima? Questa lunghezza è uguale per altri nomi (colonne, tabelle ecc.)?

Il manual answers here:

Il sistema utilizza non più di NAMEDATALEN-1 byte di un identificatore; nomi più lunghi possono essere scritti nei comandi, ma verranno troncati. Per impostazione predefinita, NAMEDATALEN è 64 quindi la lunghezza massima dell'identificatore è byte. Se questo limite è problematico, può essere generato modificando la costante in src/include/pg_config_manual.h.

Bold enfasi miniera.

Significato, l'unico modo per modificarlo è hackerare il codice sorgente e ricompilare PostgreSQL.
I nomi di dominio sono identificatori come gli altri. Quando eseguo:

CREATE DOMAIN d_complement_activite_etablissement_or_even_loger_than_that AS text 

ottengo quello che ho ordinato (appena testato su PostgreSQL 8.4 e 9.0; 9.1 non è diverso qui):

d_complement_activite_etablissement_or_even_loger_than_that 

Ergo: ci deve essere qualche altro pezzo di ritaglio software il tuo nome.

+0

hmm ... è strano. Ora funziona anche per me. Uso Postgre 9.1 e ho eseguito il comando da pgAdmin. Grazie –

+1

@FlorinVistig: l'editor SQL di pgAdmin ha una bella funzionalità: quando selezioni una parte del codice prima dell'esecuzione, viene eseguita solo la ** parte selezionata **, ignorando tutto il resto. Ne sei consapevole, giusto? Sembra che tu sia inciampato in quello. –

+0

Non sapevo di quella funzione. Ma ho lavorato di più su SQL Server dove esiste questa caratteristica, e so di starne alla larga. Non so quale sia stato il motivo ... –

Problemi correlati