3

尝试使用外键创建表。我不断收到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)
);
4

3 回答 3

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它。

于 2013-10-12T21:42:59.680 回答
1

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

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

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

于 2021-04-21T11:15:17.633 回答
0

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

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

所以请先看看连接字符串 :)

于 2014-05-28T09:37:26.213 回答