Quelle est la longueur maximale d'un nom de table et d'un nom de colonne dans Oracle?
Quelle est la longueur maximale d'un nom de table et d'un nom de colonne dans Oracle?
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 au-dessous, la longueur maximale du nom d'objet est de 30 octets.
Notez le type et la taille des données
>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
rendement LOG_TABLE VARCHAR2(128)
mais si vous essayez quelque chose d' approchant 30 caractères ou plus pour un nom de journal de vue matérialisée, vous obtiendrez des résultats assez troublants.
DÉCRIRE all_tab_columns
affichera un TABLE_NAME VARCHAR2 (30)
Remarque 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 multi-octets.
Mike
Bien, 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 cœurs et des chats souriants dans votre DB, vous nommez votre amende ...
30 char (octets, vraiment, comme cela a été dit).
Mais ne me faites pas confiance; essayez ceci par vous-même:
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
Mise à jour: comme indiqué ci-dessus, dans Oracle 12.2 et versions ultérieures, la longueur maximale du nom d'objet est désormais de 128 octets.
Les règles de dénomination des objets de schéma peuvent également être utiles:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
Dans la base de données 10g dont je traite, je sais que les noms de table ne dépassent pas 30 caractères. Impossible de vous dire quelle est la longueur du nom de la colonne (mais je sais qu'elle est> 30).
La longueur maximale des noms d'objets de base de données Oracle est de 30 octets .
Règles de nom d'objet: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Je travaille sur Oracle 12c 12.1. Cependant, cela ne semble pas autoriser plus de 30 caractères pour les noms de colonne / table.
Lisez 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 n'autorise pas plus de 30 octets de nom.
J'ai trouvé un autre article sur 12c R2, qui semble autoriser jusqu'à 128 caractères. 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 concerne l'utilisation des utilisateurs de la base de données sybase. J'ai vérifié cette réponse minutieusement, de sorte que j'ai posté cette réponse avec confiance.