当我执行以下代码时,我得到关系“产品”不存在错误。
CREATE TABLE Orders(
ORDERID serial NOT NULL PRIMARY KEY,
ORDERDATE text NOT NULL default'',
CUSTOMERID serial NOT NULL REFERENCES Customers(CUSTOMERID),
NETAMOUNT text NOT NULL default'',
TAX text NOT NULL default'',
TOTALAMOUNT text NOT NULL default''
);
CREATE TABLE Orderlines(
ORDERLINEID serial NOT NULL,
ORDERID serial NOT NULL REFERENCES Orders(ORDERID),
PROD_ID serial NOT NULL REFERENCES Products(PROD_ID),
QUANTITY text NOT NULL default'',
ORDERDATE text NOT NULL default'',
PRIMARY KEY(ORDERLINEID,ORDERID)
);
CREATE TABLE Products(
PROD_ID serial NOT NULL PRIMARY KEY,
CATEGORY text NOT NULL references Products(CATEGORY),
TITLE text NOT NULL default'',
ACTOR text NOT NULL default'',
PRICE text NOT NULL default''
);
我在http://sqlfiddle.com/中执行此操作,如果它与它有任何关系。
答案 0 :(得分:3)
创建表SearchCtrl
时,orderlines
表的create table
尚未执行。您需要在创建所有表后添加外键。
您应仅将主要键列定义为products
,而不是外键列 - 它们将引用目标表中生成的值。插入时,您不希望为FK列生成新值。
外键:
serial
是错误的,原因有二:首先因为CATEGORY text NOT NULL references Products(CATEGORY)
不是category
表的主键。其次,因为类别列引用自身没有意义。您可能想要引用products
表。
您的脚本也缺少categories
表。
您选择的数据类型错误。
customers
(或text
)列中。将所有这些放在一起,脚本应该是这样的:
varchar