1

ERD に基づいて 7 つのテーブルを作成する SQL コードをいくつか作成しました。

それが言うことを除いて、それは働くことに非常に近いようです

外部キー制約で参照されている列「inv_no」が存在しません

ただし、inv_no が含まれているテーブルの送り状が作成され、列 inv_no があるため、inv_no を外部キーとして必要とする他のテーブルの送り状行を作成する方法が存在しないことを非常に混乱させています。

これが私のコードです:

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、invoiceline に列がありません。その列も宣言する必要があります。

CREATE TABLE 請求行 (
        inv_no INTEGER NOT NULL,
       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 送り状(inv_no)
);
于 2012-09-24T21:04:12.553 に答える
0

Invoiceline テーブルを読むべきではありません。

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 に答える