PostgreSQL错误:关系“产品”不存在

时间:2016-01-30 15:38:44

标签: sql postgresql

我正在尝试创建以下架构enter image description here

当我执行以下代码时,我得到关系“产品”不存在错误。

    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/中执行此操作,如果它与它有任何关系。

1 个答案:

答案 0 :(得分:3)

创建表SearchCtrl时,orderlines表的create table尚未执行。您需要在创建所有表后添加外键。

您应主要键列定义为products,而不是外键列 - 它们将引用目标表中生成的值。插入时,您不希望为FK列生成新值。

外键:

serial

是错误的,原因有二:首先因为CATEGORY text NOT NULL references Products(CATEGORY) 不是category表的主键。其次,因为类别列引用自身没有意义。您可能想要引用products表。

您的脚本也缺少categories表。

您选择的数据类型错误。

从不 的数量或日期应存储在customers(或text)列中。

将所有这些放在一起,脚本应该是这样的:

varchar