SQL Oracle слишком длинный идентификатор
Также знаю про размер идентификатора в 30 байтов, и то что кириллица весит 2 байта, но в моей таблице нет и 15 символов в названии.
CREATE TABLE insurance_type(
"ID_Видстрах" NUMBER(2, 0) NOT NULL,
"Вид страх" VARCHAR2(8) UNIQUE NOT NULL,
"Наим риска" VARCHAR2(32) UNIQUE NOT NULL,
constraint ВИД_СТРАХ_PK PRIMARY KEY ("ID_Видстрах"));
[42000][972] ORA-00972: слишком длинный идентификатор
Подобная ошибка выдается на многие таблицы в которых не присутствует названий длиннее 15 символов с использованием кириллицы. Подскажите, что делать?
Ответы (1 шт):
Все идентифкаторы с длинной более 30 английских символов, а также любые содержащие не английские буквы должны заключаться в двойные кавычки.
Название ключа у вас ВИД_СТРАХ_PK без кавычек.
С систаксисом ниже таблица создалась под Oracle 11.
CREATE TABLE insurance_type(
"ID_Видстрах" NUMBER(2, 0) NOT NULL,
"Вид страх" VARCHAR2(8) UNIQUE NOT NULL,
"Наим риска" VARCHAR2(32) UNIQUE NOT NULL,
constraint "ВИД_СТРАХ_PK" PRIMARY KEY ("ID_Видстрах"));
Описанное справедливо, если по умолчанию для базы установлен английский алфавит. Судя по документации при определенных условиях даже русские идентифкаторы могут быть без кавычек.
Nonquoted identifiers must begin with an alphabetic character from your database character set. Quoted identifiers can begin with any character
Подробно в документации.