【问题标题】:Error pops up while creating the table创建表时弹出错误
【发布时间】:2017-05-17 10:30:52
【问题描述】:

创建此表时出现错误,您能帮忙解决一下吗:

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:

【问题讨论】:

  • 哪个 Oracle 版本?如果我没记错的话,你可以从 12c 开始使用这个
  • 如果你想要自动递增 id,请查看此链接http://stackoverflow.com/questions/11296361/how-to-create-id-with-auto-increment-on-oracle
  • 感谢您的回复..am 使用 Oracle 11g
  • 当我删除序列创建部分时..然后能够创建表..但没有将 FIPR_Id 作为序列。

标签: oracle


【解决方案1】:

您的 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
   );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2019-01-17
    相关资源
    最近更新 更多