2017-01-03 3 views
-1

При создании этой таблицы я получаю ошибку, вы можете помочь с этим:Ошибка выскакивает при создании таблицы

CREATE TABLE FIPR_MASTER ( 
    FIPR_Id INT NOT NULL GENERATED ALWAYS 
     AS IDENTITY 
     (START WITH 100 
     INCREMENT BY 1 
     MINVALUE 100 
     NO MAXVALUE 
     NO CYCLE 
     NO CACHE 
     ORDER) PRIMARY KEY, 

    FIPR_NAME VARCHAR2(40) NOT NULL, 
    BU_NAME VARCHAR2(40) NOT NULL, 
    LOCATION VARCHAR2(40) NOT NULL, 
    RECORD_SOURCE_NAME VARCHAR2(200) NOT NULL, 
    PRIORITY_QUEUE VARCHAR2(40) NOT NULL, 
    STATUS VARCHAR2(40) NOT NULL, 
    INDEXING_TYPE VARCHAR2(40) NOT NULL, 
    SOURCE_PATH VARCHAR2(200) NOT NULL, 
    DESTINATION_PATH VARCHAR2(200) NOT NULL, 
    COMMENTS VARCHAR2(200) NOT NULL 
    ) 

Ошибка:

CREATE TABLE FIPR_MASTER ( 
    FIPR_Id INT NOT NULL GENERATED ALWAYS 
     AS IDENTITY 
     (START WITH 100 
     INCREMENT BY 1 
     MINVALUE 100 
     NO MAXVALUE 
     NO CYCLE 
     NO CACHE 
     ORDER) , 

    FIPR_NAME VARCHAR2(40) NOT NULL, 
    BU_NAME VARCHAR2(40) NOT NULL, 
    LOCATION VARCHAR2(40) NOT NULL, 
    RECORD_SOURCE_NAME VARCHAR2(200) NOT NULL, 
    PRIORITY_QUEUE VARCHAR2(40) NOT NULL, 
    STATUS VARCHAR2(40) NOT NULL, 
    INDEXING_TYPE VARCHAR2(40) NOT NULL, 
    SOURCE_PATH VARCHAR2(200) NOT NULL, 
    DESTINATION_PATH VARCHAR2(200) NOT NULL, 
    COMMENTS VARCHAR2(200) NOT NULL, PRIMARY KEY(FIPR_Id) 
    ) 
Error report - 
SQL Error: ORA-00907: missing right parenthesis 
00907. 00000 - "missing right parenthesis" 
*Cause:  
*Action: 
+0

Какая версия Oracle? Если я хорошо помню, вы можете использовать это с 12c по – Aleksej

+0

Возможный дубликат [создать таблицу с sequence.nextval в oracle] (http://stackoverflow.com/questions/10613846/create-table-with-sequence-nextval-in -oracle) – XING

+0

Если вы хотите автоинкремент id, проверьте эту ссылку 'http: // stackoverflow.com/questions/11296361/how-to-create-id-with-auto-increment-on-oracle' – XING

ответ

2

Вы имеете несколько проблем с вашим DDL заявление:

  1. столбец идентификаторов должны быть объявлены до каких-либо ограничений инлайн (not null, считается, что ограничение инлайн)
  2. Увидев, что вы объявляете это как первичный ключ (одним из определений является то, что столбцы pk не являются нулевыми), нет необходимости явно указывать not null в любом случае!
  3. Между NO и MAXVALUE, CYCLE и CACHE не должно быть зазоров.

Следующая инструкция будет работать для вас, если вы находитесь на 12.1 или выше:

CREATE TABLE FIPR_MASTER ( 
    FIPR_Id INT GENERATED ALWAYS 
     AS IDENTITY 
     (START WITH 100 
     INCREMENT BY 1 
     MINVALUE 100 
     NOMAXVALUE 
     NOCYCLE 
     NOCACHE 
     ORDER) PRIMARY KEY, 

    FIPR_NAME VARCHAR2(40) NOT NULL, 
    BU_NAME VARCHAR2(40) NOT NULL, 
    LOCATION VARCHAR2(40) NOT NULL, 
    RECORD_SOURCE_NAME VARCHAR2(200) NOT NULL, 
    PRIORITY_QUEUE VARCHAR2(40) NOT NULL, 
    STATUS VARCHAR2(40) NOT NULL, 
    INDEXING_TYPE VARCHAR2(40) NOT NULL, 
    SOURCE_PATH VARCHAR2(200) NOT NULL, 
    DESTINATION_PATH VARCHAR2(200) NOT NULL, 
    COMMENTS VARCHAR2(200) NOT NULL 
    ); 
Смежные вопросы