尝试使用外键创建表。我一直收到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)
);
答案 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:)