ORA-00904:“ID”:标识符无效

时间:2013-10-12 21:40:27

标签: sql oracle foreign-keys ddl

尝试使用外键创建表。我一直收到ORA-00904错误。我究竟做错了什么。是因为尚未创建外键表吗?

CREATE TABLE ingredients( 
   ingredient_id       number(2,0),
   ingredient          VARCHAR2(55) NOT NULL,
   quantity_required   VARCHAR2(15) NOT NULL,
   optional_ingredient VARCHAR2(30) NOT NULL,
   CONSTRAINT pk_ingr_id PRIMARY KEY(ingredient_id),
   CONSTRAINT fk_ingredient_list FOREIGN KEY(id) REFERENCES ingredient_list(id)
);

3 个答案:

答案 0 :(得分:5)

看一下以下一行:

CONSTRAINT fk_ingredient_list FOREIGN KEY(id) REFERENCES ingredient_list(id)

您的表没有名为“id”的列。我假设你打算写

CONSTRAINT fk_ingredient_list FOREIGN KEY(ingredient_id) REFERENCES ingredient_list(id)

编辑:
另外,正如您所怀疑的那样,如果要引用ingredient_list表,则必须在创建引用它的ingredients表之前创建它。

答案 1 :(得分:1)

就我而言,我在表创建中使用了引号,如下所示:

CREATE TABLE MY_TABLE (
"ID"                   NUMBER(19, 0) NOT NULL ENABLE,
"OPT_LOCK_VERSION"     NUMBER(19, 0),
-- etc.

然后尝试创建与问题类似的约束。这导致了相同的 ORA-00904 错误。当我通过删除那些不必要的引号来修改我的表创建脚本时,约束创建开始工作。

答案 2 :(得分:0)

我们永远不会知道,但就我而言,无论我给我的专栏命名是什么,我都有这个例外。 我有一个EF的库,它指向正确的数据库。实体是正确的。

但是在客户端部分(Web应用程序)上,连接字符串指向另一个数据库! 一个愚蠢的错误,很难确定这种愚蠢的错误......

所以请看一下连接字符串FIRST:)