1

我创建了一些 SQL 代码来创建基于 ERD 的 7 个表。

它似乎非常接近工作,除了它说

外键约束中引用的列“inv_no”不存在

但是,创建了 inv_no 所在的表 invoice,并且具有 inv_no 列,所以我很困惑如何创建需要 inv_no 作为外键的其他表 invoiceLine 是不存在的。

这是我的代码:

CREATE TABLE invoice(

        inv_no          INTEGER         NOT NULL,
        cust_id         INTEGER         NOT NULL,
        inv_date        DATE            NOT NULL,
CONSTRAINT PK_invoice_inv_no PRIMARY KEY(inv_no),
CONSTRAINT FK_customer_cust_id FOREIGN KEY(cust_id) REFERENCES customer(cust_id)
);

CREATE TABLE invoiceLine(

        inv_line_no     INTEGER         NOT NULL,
        inv_line_qty    INTEGER         NOT NULL,
CONSTRAINT PK_invoiceLine_inv_line_no PRIMARY KEY(inv_line_no),
CONSTRAINT FK_invoice_inv_no FOREIGN KEY(inv_no) REFERENCES invoice(inv_no)
);

同样,有问题的表是 invoiceLine,它似乎依赖于 invoice 表中的 inv_no。

如果有人能发现我的错误,那就太好了!

4

3 回答 3

5

错误消息是正确的,发票行中没有列inv_no。您还需要声明该列:

CREATE TABLE invoiceLine(
        inv_no INTEGER NOT NULL,
       inv_line_no INTEGER NOT NULL,
       inv_line_qty INTEGER NOT NULL,
约束 PK_invoiceLine_inv_line_no 主键(inv_line_no),
约束 FK_invoice_inv_no 外键(inv_no)参考发票(inv_no)
);
于 2012-09-24T21:04:12.553 回答
0

您的发票行表不应该阅读吗?

CREATE TABLE invoiceLine(

        inv_line_no     INTEGER         NOT NULL,
        inv_line_qty    INTEGER         NOT NULL,
CONSTRAINT PK_invoiceLine_inv_line_no PRIMARY KEY(inv_line_no),
CONSTRAINT FK_invoice_inv_no FOREIGN KEY(inv_line_no) REFERENCES invoice(inv_no)
);

inv_line_no代替inv_no

于 2012-09-24T21:04:21.953 回答
0

您可能希望在添加外键约束之前将 inv_no 列添加到 invoiceLine 表。

CREATE TABLE invoiceLine(

    inv_line_no     INTEGER         NOT NULL,
    inv_line_qty    INTEGER         NOT NULL,
    inv_no          Integer         Not Null,
CONSTRAINT PK_invoiceLine_inv_line_no PRIMARY KEY(inv_line_no),
CONSTRAINT FK_invoice_inv_no FOREIGN KEY(inv_no) REFERENCES invoice(inv_no)
);
于 2012-09-24T21:13:48.667 回答