Яка максимальна довжина імені таблиці та імені стовпця в 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 символів або більше для матеріалізованого імені журналу перегляду, ви отримаєте кілька неприємних результатів.
ВИЗНАЧИТИ всі_tab_колонки
покаже 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
У базі даних 10 г, з якою я маю справу, я знаю, що назви таблиць розміщуються в 30 символів. Не можу сказати, яка довжина назви стовпця (але я знаю, що це> 30).
Максимальна довжина імен об'єктів бази даних Oracle - 30 байт .
Правила імені об’єкта: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Я працюю над Oracle 12c 12.1. Однак, схоже, це не більше 30 символів для імен стовпців / таблиць.
Прочитайте сторінку oracle, в якій згадується 30 байт. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
У 12c, хоча всі_tab_column кажуть VARCHAR2 (128) для Table_Name, він не дозволяє використовувати більше 30 байт імені.
Знайдено ще одну статтю про 12c R2, яка, здається, дозволяє до 128 символів. https://community.oracle.com/ideas/3338
Максимальна довжина назви таблиці та стовпців - 128 байт або 128 символів. Цей ліміт призначений для використання користувачами бази даних sybase. Я ретельно перевірив цю відповідь, щоб впевнено опублікувати цю відповідь.