Какова максимальная длина имени таблицы и имени столбца в Oracle?
Какова максимальная длина имени таблицы и имени столбца в Oracle?
Ответы:
В Oracle 12.2 и выше максимальная длина имени объекта составляет 128 байтов.
В Oracle 12.1 и ниже максимальная длина имени объекта составляет 30 байтов.
Обратите внимание на тип данных и размер
>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
возвращается, LOG_TABLE VARCHAR2(128)
но если вы попробуете что-нибудь, приближающееся к 30 или более символам, для материализованного имени журнала представления, вы получите довольно удивительные результаты.
ОПИСАТЬ all_tab_columns
покажет TABLE_NAME VARCHAR2 (30)
Примечание VARCHAR2 (30) означает ограничение в 30 байтов, а не ограничение в 30 символов, и, следовательно, может отличаться, если ваша база данных настроена / настроена на использование многобайтового набора символов.
Майк
Правильно, но до тех пор, пока вы используете символы ASCII, даже многобайтовый набор символов будет по-прежнему давать ограничение в 30 символов ... поэтому, если вы не хотите помещать сердца и улыбающихся кошек в свои имена БД, вы прекрасно ...
30 символов (на самом деле, как уже было сказано).
Но не верь мне; попробуйте это для себя:
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
Обновлено: как указано выше, в Oracle 12.2 и более поздних версиях максимальная длина имени объекта теперь составляет 128 байтов.
Правила именования объектов схемы также могут быть полезны:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
Я знаю, что в базе данных 10g имена таблиц не превышают 30 символов. Не могу сказать, какова длина имени столбца (но я знаю, что это> 30).
Максимальная длина имен объектов базы данных Oracle составляет 30 байт .
Правила имен объектов: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Я работаю на Oracle 12c 12.1. Однако не похоже, чтобы в именах столбцов / таблиц было больше 30 символов.
Прочитайте страницу оракула, которая упоминает 30 байтов. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
В 12c, хотя all_tab_columns действительно говорят VARCHAR2 (128) для Table_Name, оно не допускает имени более 30 байтов.
Нашел еще одну статью о 12c R2, которая, кажется, разрешает до 128 символов. https://community.oracle.com/ideas/3338
Максимальная длина имени таблицы и столбца составляет 128 байтов или 128 символов. Это ограничение для пользователей базы данных Sybase. Я тщательно проверил этот ответ, так что я опубликовал этот ответ с уверенностью.