Qual è la lunghezza massima di un nome tabella e nome colonna in Oracle?
Qual è la lunghezza massima di un nome tabella e nome colonna in Oracle?
Risposte:
In Oracle 12.2 e versioni successive la lunghezza massima del nome oggetto è 128 byte.
In Oracle 12.1 e precedenti la lunghezza massima del nome oggetto è di 30 byte.
Notare il tipo e la dimensione dei dati
>describe all_tab_columns
VIEW all_tab_columns
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT NULL VARCHAR2(30)
DATA_TYPE VARCHAR2(106)
DATA_TYPE_MOD VARCHAR2(3)
DATA_TYPE_OWNER VARCHAR2(30)
DATA_LENGTH NOT NULL NUMBER
DATA_PRECISION NUMBER
DATA_SCALE NUMBER
NULLABLE VARCHAR2(1)
COLUMN_ID NUMBER
DEFAULT_LENGTH NUMBER
DATA_DEFAULT LONG
NUM_DISTINCT NUMBER
LOW_VALUE RAW(32)
HIGH_VALUE RAW(32)
DENSITY NUMBER
NUM_NULLS NUMBER
NUM_BUCKETS NUMBER
LAST_ANALYZED DATE
SAMPLE_SIZE NUMBER
CHARACTER_SET_NAME VARCHAR2(44)
CHAR_COL_DECL_LENGTH NUMBER
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
AVG_COL_LEN NUMBER
CHAR_LENGTH NUMBER
CHAR_USED VARCHAR2(1)
V80_FMT_IMAGE VARCHAR2(3)
DATA_UPGRADED VARCHAR2(3)
HISTOGRAM VARCHAR2(15)
describe user_mview_logs
ritorna LOG_TABLE VARCHAR2(128)
ma se provi qualcosa che si avvicina a 30 caratteri o più per un nome di registro della vista materializzato, otterrai alcuni risultati abbastanza sconcertanti.
DESCRIVERE all_tab_columns
mostrerà un TABLE_NAME VARCHAR2 (30)
Nota VARCHAR2 (30) indica una limitazione di 30 byte, non una limitazione di 30 caratteri e pertanto potrebbe essere diversa se il database è configurato / impostato per utilizzare un set di caratteri multibyte.
Mike
Giusto, ma fintanto che usi caratteri ASCII anche un set di caratteri multibyte darebbe comunque una limitazione di esattamente 30 caratteri ... quindi, a meno che tu non voglia mettere cuori e gatti sorridenti nei tuoi nomi di DB, va bene ...
30 caratteri (byte, davvero, come è stato affermato).
Ma non fidarti di me; prova questo per te:
SQL> create table I23456789012345678901234567890 (my_id number);
Table created.
SQL> create table I234567890123456789012345678901(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
Aggiornato: come indicato sopra, in Oracle 12.2 e versioni successive, la lunghezza massima del nome oggetto è ora di 128 byte.
Le regole di denominazione degli oggetti dello schema possono anche essere di qualche utilità:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
Nel database 10g con cui ho a che fare, so che i nomi delle tabelle hanno un massimo di 30 caratteri. Non saprei dirti qual è la lunghezza del nome della colonna (ma so che è> 30).
La lunghezza massima dei nomi degli oggetti del database Oracle è di 30 byte .
Regole nome oggetto: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Sto lavorando su Oracle 12c 12.1. Tuttavia, non sembra che consenta più di 30 caratteri per i nomi di colonne / tabelle.
Leggi una pagina di Oracle che menziona 30 byte. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
Nel 12c sebbene tutte le colonne_colori_dici dicano VARCHAR2 (128) per Table_Name, non consente più di 30 byte di nome.
Ho trovato un altro articolo su 12c R2, che sembra consentire fino a 128 caratteri. https://community.oracle.com/ideas/3338
La lunghezza massima del nome della tabella e della colonna è di 128 byte o 128 caratteri. Questo limite è per l'utilizzo degli utenti del database sybase. Ho verificato a fondo questa risposta, quindi ho pubblicato questa risposta con sicurezza.