У вас было ;
после "Number_adopted" (number) (1)
, также круглые скобки вокруг number
здесь неверны. Тогда вы забыли ,
после ограничений. Если вы определили столбец с "
вокруг имени, а имя не все в верхнем регистре, регистр отдельных символов должен совпадать в последующих ссылках, и они также должны быть заключены в "
. Вот почему ваш constraint "Mobile_uni" unique (Mobile_number)
должен был быть изменен на constraint "Mobile_uni" unique ("Mobile_number")
. (Но вы, вероятно, захотите пересмотреть это и сделать имена столбцов в верхнем регистре в первую очередь. Опыт подсказывает мне, что такая вещь - будущая ловушка, поскольку вы должны точно использовать это имя в любом запросе и т. Д., И это трудно заметить, что можно задаться вопросом, почему вещи не работают.) И это USING INDEX ENABLE
было неуместно, я думаю.
CREATE TABLE "CUSTOMER"
(
"CUS_ID" VARCHAR2(9),
"CUSTOMER_NAME" VARCHAR2(30),
"EMAIL" VARCHAR2(30),
"BIRTH_DATE" DATE,
"Mobile_number" NUMBER (10),
"Number_adopted" number (1), -- delete ( ) ; add ,
CONSTRAINT "CUSTOMER_PK" PRIMARY KEY ("CUS_ID") USING INDEX ENABLE, -- add ,
constraint "Email_uni" unique (EMAIL), -- add ,
constraint "Mobile_uni" unique ("Mobile_number"), -- add , " "
constraint "adopted_range_ck" check ( "Number_adopted" >=1 and "Number_adopted"<=4) -- move USING INDEX ENABLE add " "
);
Во втором вы также забыли ,
после ограничений и потеряли USING INDEX ENABLE
. Вы также неправильно поместили "
для проверочных ограничений и ввели в них ключевое слово CHECK
.
CREATE TABLE "ANIMAL"
( "ANIMAL_ID" VARCHAR2(9),
"ANIMAL_NAME" VARCHAR2(30),
"AGE" NUMBER(2),
"ANIMAL_TYPE" VARCHAR2(30),
"EXPENCES" NUMBER (10),
"ADOPTED" VARCHAR2(9),
CONSTRAINT "ANIMAL_PK" PRIMARY KEY ("ANIMAL_ID") USING INDEX ENABLE, -- add ,
CONSTRAINT "ANIMAL_EXP_ck" check ( EXPENCES >=1 and EXPENCES<=1000), -- add , move "
CONSTRAINT "ANIMAL_AGE_ck" check ( AGE >=1) -- move "
-- move USING INDEX ENABLE
);