创建带有外键的表会出现错误 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: invalid identifier”?