Не могу определить, какой тип данных неверен в моей таблице SQL

#sql #oracle #database-sequence

#sql #Oracle #database-последовательность

Вопрос:

Я пытаюсь создать таблицу SQL, но продолжаю получать эту ошибку.

 Error report -
ORA-00902: invalid datatype
00902. 00000 -  "invalid datatype"
  

Вот мой код.

 CREATE TABLE viewers
(
    user_id     SEQUENCE    PRIMARY KEY,
    first_name  VARCHAR2(30),
    last_name   VARCHAR2(40) NOT NULL,
    email       VARCHAR2(40) CHECK(LENGTH(email) > 8),
    DOB         DATE,
    CONSTRAINT contact_email UNIQUE (email)
);
  
 CREATE SEQUENCE user_id_seq
    START WITH 100000   INCREMENT BY 1
    MINVALUE 100000     MAXVALUE 999999;
  

Комментарии:

1. Доступные типы данных перечислены здесь . SEQUENCE отсутствует в списке.

Ответ №1:

Ваше намерение правильное, но синтаксическое использование — нет.

Вам необходимо создать последовательность в качестве первого шага,

 create sequence seq_user_id;

CREATE TABLE viewers
(
    user_id     number default seq_user_id.nextval PRIMARY KEY,
    first_name  VARCHAR2(30),
    last_name   VARCHAR2(40) NOT NULL,
    email       VARCHAR2(40) CHECK(LENGTH(email) > 8),
    DOB         DATE,
    CONSTRAINT contact_email UNIQUE (email)
);
  

PS. Если вы используете 12c и выше, рассмотрите возможность использования identity column, что является хорошей функцией. Я предоставляю вам ссылку.