【问题标题】:Oracle SQL script giving error. I try to create tableOracle SQL 脚本给出错误。我尝试创建表
【发布时间】:2019-09-27 21:36:31
【问题描述】:

我在 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:

如何解决这个问题?

【问题讨论】:

    标签: sql oracle create-table


    【解决方案1】:

    您的代码有问题:

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

    Demo on DB Fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 2012-08-10
      • 2023-02-21
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多