Сценарий Oracle SQL дает ошибку.Я пытаюсь создать таблицу - PullRequest
1 голос
/ 28 сентября 2019

У меня есть скрипт в Oracle SQL:

CREATE TABLE "CONNECTIONS_DB"
("USER" VARCHAR2(4) NOT NULL,
 "TIME" DATE NOT NULL,
 "STATUS" BOOLEAN NOT NULL,
 CONSTRAINT "CONNECTIONS_DB_PK" PRIMARY KEY ("USER", "TIME", "STATUS"),
);

, и он возвращает следующую ошибку:

Error starting at line : 616 in command -
CREATE TABLE "CONNECTIONS_DB"
("USER" VARCHAR2(4) NOT NULL,
 "TIME" DATE NOT NULL,
 "STATUS" BOOLEAN NOT NULL,
 CONSTRAINT "CONNECTIONS_DB_PK" PRIMARY KEY ("USER", "TIME", "STATUS"),
)
Error report -
ORA-00904: : недопустимый идентификатор
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

Как это исправить?

1 Ответ

0 голосов
/ 28 сентября 2019

Проблемы с вашим кодом:

1) в конце строки есть запятая, которая объявляет CONSTRAINT

2) тип данных BOOLEAN не существует в Oracle;вы можете использовать NUMBER(1) вместо

Обратите внимание:

CREATE TABLE "CONNECTIONS_DB" (
    "USER" VARCHAR2(4) NOT NULL,
    "TIME" DATE NOT NULL,
    "STATUS" NUMBER(1) NOT NULL,
    CONSTRAINT CONNECTIONS_DB_PK PRIMARY KEY ("USER", "TIME", "STATUS")
);

Примечание: USER - зарезервированное слово в Oracle.Я бы предложил использовать другой идентификатор (например, USERNAME) и удалить двойные кавычки вокруг идентификаторов.Это избавит вас от работы с двойными кавычками в этом столбце во всех дальнейших запросах:

CREATE TABLE CONNECTIONS_DB (
    USERNAME VARCHAR2(4) NOT NULL,
    TIME DATE NOT NULL,
    STATUS NUMBER(1) NOT NULL,
    CONSTRAINT CONNECTIONS_DB_PK PRIMARY KEY (USERNAME, TIME, STATUS)
);

Демонстрация на БД Fiddle

...