【问题标题】:error "%s: invalid identifier" occurs when I create a table in Oracle DB在 Oracle DB 中创建表时出现错误“%s: invalid identifier”
【发布时间】:2012-10-01 15:14:01
【问题描述】:

当我创建这样的表时:

create table DBDI_HIREDETAIL(
HireID int not null,
EquipID int not null,
Quantity int,
TotalFee float,
Comment varchar(200)
);

错误是这样发生的:

命令行错误:“TotalFee float” 错误报告: SQL 错误: ORA-00904: : 无效的标识符 00904. 00000 - "%s: 无效标识符"

我不明白为什么我的代码有错误,它似乎很好。

【问题讨论】:

标签: sql oracle


【解决方案1】:

COMMENT是Oracle中的保留字;它用于将comments 添加到数据字典中。您应该避免将其用作列名。

SQL> create table a ( comment number );
create table a ( comment number )
                 *
ERROR at line 1:
ORA-00904: : invalid identifier

如果你真的想要使用这个列名,你必须引用它,即"COMMENT"

SQL> create table a ( "COMMENT" number );

Table created.

我建议您不要这样做,因为您必须在任何地方引用该列。

【讨论】:

  • 非常感谢,它可以工作:),我是 Oracle DB 的新手,我尝试将符号“[]”包含为“[Comment]”,因为我认为它与MS sql server 但它没有工作。
  • 没问题@user1712088!如果您为列想出一个不同的名称,而不是引用列名,那么您的生活会容易得多。如果你引用它,你必须确保它每次都是相同的;如果您将其称为comments 或类似的名称,从长远来看,您将为自己省去很多麻烦。
【解决方案2】:

这是因为 COMMENT 是 SQL 中的保留字 - 请改用其他列名(如 HIREDETAIL_COMMENT):

create table DBDI_HIREDETAIL(
  HireID int not null,
  EquipID int not null,
  Quantity int,
  TotalFee float,
  HireDetail_Comment varchar(200)
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多