Quelle est la longueur maximale d'un nom de table dans Oracle?
Quelle est la longueur maximale d'un nom de table et d'un nom de colonne dans Oracle?
12 réponses
Dans Oracle 12.2 et au-dessus, la longueur maximale du nom d'objet est de 128 octets.
Dans Oracle 12.1 et en dessous, la longueur maximale du nom d'objet est de 30 octets.
Apprendre à un homme à pêcher
Notez le type de données et la taille
>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)
Décrire all_tab_columns
Affichera un TABLE_NAME VARCHAR2 (30)
Note VARCHAR2 (30) signifie une limitation de 30 octets, pas une limitation de 30 caractères, et peut donc être différente si votre base de données est configurée/configurée pour utiliser un jeu de caractères multioctets.
Mike
C'est vrai, mais tant que vous utilisez des caractères ASCII, même un jeu de caractères multi-octets donnerait toujours une limitation d'exactement 30 caractères... donc, à moins que vous ne vouliez mettre des coeurs et des chats souriants dans VOUS ÊTES des noms DB votre amende...
30 char (octets, vraiment, comme cela a été indiqué).
Mais ne me faites pas confiance; essayez ceci par vous-même:
SQL> create table a23545678901234567890123456789 (my_id number);
Table created.
SQL> create table a235456789012345678901234567890(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
Mise à jour: comme indiqué ci-dessus, dans Oracle 12.2 et versions ultérieures, la longueur maximale du nom d'objet est maintenant de 128 octets.
Les règles de nommage des objets du schéma peuvent également être utiles:
Http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
Sur Oracle 12.2
, Vous pouvez utiliser la constante intégrée, ORA_MAX_NAME_LEN
,
défini sur 128 octets (selon 12.2)
Avant Oracle 12.1
, la taille maximale était de 30 octets.
Dans la base de données 10g avec laquelle je traite, je sais que les noms de table sont maximisés à 30 caractères. Je ne pouvais pas vous dire quelle est la longueur du nom de la colonne (mais je sais que c'est > 30).
Noms d'objets de base de données Oracle la longueur maximale est de 30 octets .
Règles De Nom D'Objet: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
La taille maximale du nom est de 30 caractères en raison du dictionnaire de données qui n'autorise le stockage que pour 30 octets
Je travaille sur Oracle 12c 12.1. Cependant, il ne semble pas que cela autorise plus de 30 caractères pour les noms de colonnes / tables.
Lire une page oracle qui mentionne 30 octets. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
En 12c bien que les all_tab_columns disent VARCHAR2 (128) pour Table_Name, il ne permet pas plus de 30 octets de nom.
Trouvé un autre article sur 12c R2, qui semble permettre cela jusqu'à 128 caractère. https://community.oracle.com/ideas/3338
La longueur maximale du nom de la table et de la colonne est de 128 octets ou 128 caractères. Cette limite est pour l'utilisation des utilisateurs de la base de données sybase. J'ai vérifié cette réponse à fond, de sorte que j'ai posté cette réponse en toute confiance.