创建带有外键的表会出现错误 ORA-00904: : oracle 10g 中的无效标识符 [重复]

Posted

技术标签:

【中文标题】创建带有外键的表会出现错误 ORA-00904: : oracle 10g 中的无效标识符 [重复]【英文标题】:creating a table with Foreign key in it gives error ORA-00904: : invalid identifier in oracle 10g [duplicate] 【发布时间】:2019-11-08 08:51:49 【问题描述】:

Image of the code with table, query and error

我的计算机上安装了 oracle 10g。我在其中创建了一个名为 STUDENT 的表,该 STUDENT 表有一个名为 RNO 的主键,现在我想创建另一个名为 FEE 的表,并使用以下查询将此 RNO 键设为 FEE 表中的外键:

CREATE TABLE FEE ( RNO NUMBER(2), Amount number(20) Not Null, Date varchar2(10) Not Null, Receipt Number(10) Not Null, CONSTRAINT FEEFK FOREIGN KEY (RNO) REFERENCES STUDENT (RNO));

现在我已尽我所能纠正它,但似乎找不到上述查询的任何问题或错误。查询在 Oracle 10g 中给出以下错误:

ORA-00904: : 无效标识符

【问题讨论】:

根据重复项,您不能将保留(未引用)关键字作为列名;要么将 DATE 列更改为另一个名称,要么使用双引号 "DATE" 表示它是一个(区分大小写的)标识符,但后一种选项可能会导致问题,因为你需要在任何地方引用它使用它。 【参考方案1】:

列名不能是DATE,它是为数据类型保留的。将其重命名为 CDATE

SQL> CREATE TABLE student (rno NUMBER (2) PRIMARY KEY);

Table created.

SQL> CREATE TABLE FEE
  2  (
  3     RNO      NUMBER (2),
  4     Amount   NUMBER (20) NOT NULL,
  5     cDate    VARCHAR2 (10) NOT NULL,
  6     Receipt  NUMBER (10) NOT NULL,
  7     CONSTRAINT FEEFK FOREIGN KEY (RNO) REFERENCES STUDENT (RNO)
  8  );

Table created.

SQL>

【讨论】:

非常感谢。它解决了我的问题。【参考方案2】:

使用双引号“日期”或将您的列日期重命名为其他名称,例如 DateColumn,因为日期是 oracle 中 fpr 日期类型的保留名称

【讨论】:

括号?对于甲骨文?我不这么认为。 @Littlefoot 啊,在 sql server 和 oracle 的双引号的情况下,我得到了括号 顺便说一句 @MuhammadKashif 标识符无效意味着列名出现问题,因为标识符日期无效

以上是关于创建带有外键的表会出现错误 ORA-00904: : oracle 10g 中的无效标识符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

外键无效标识符

ORA-00904: 插入表时标识符无效

带有错误 ORA-00904 的 Oracle 更新语句

为啥此查询中出现错误“ORA-00904: invalid identifier”?

Oracle DB - ORA-00904:选择时出现“无效标识符”错误

创建带有外键错误号的 sql 表:150