7

我正在尝试创建表(orderdetails2);该表在两个 FK 列上有两个 FK 和一个 PK。这是我的代码:

版本 1

    create table OrderDetails2 (
PFOrder_ID Number(3)  FOREIGN KEY REFERENCES Orderr(Order_ID),
PFProduct_ID Number(3) FOREIGN KEY REFERENCES Product(Product_ID),
CONSTRAINT PF PRIMARY KEY (PFOrder_ID,PFProduct_ID),
CONSTRAINT FK_1 FOREIGN KEY (PFProudct_ID)
REFERENCES Product(Product_ID),
CONSTRAINT FK_2 FOREIGN KEY (PFOrder_ID)
REFERENCES Orderr(Order_ID),

版本 2

            create table OrderDetails2 (
    PFOrder_ID Number(3)
    PFProduct_ID Number(3) 
    CONSTRAINT PF PRIMARY KEY (PFOrder_ID,PFProduct_ID),
    CONSTRAINT FK_1 FOREIGN KEY (PFProudct_ID) REFERENCES Product(Product_ID),
    CONSTRAINT FK_2 FOREIGN KEY (PFOrder_ID) REFERENCES Orderr(Order_ID)
);

我正在使用 Oracle 快递。运行代码时会出现问题。这是(对于版本 1):

ORA-00907: missing right parenthesis

问题是什么?

4

2 回答 2

5

从代码的变体开始:

create table OrderDetails2 (
    PFOrder_ID Number(3)
    PFProduct_ID Number(3) 
    CONSTRAINT PF PRIMARY KEY (PFOrder_ID,PFProduct_ID),
    CONSTRAINT FK_1 FOREIGN KEY (PFProudct_ID) REFERENCES Product(Product_ID),
    CONSTRAINT FK_2 FOREIGN KEY (PFOrder_ID) REFERENCES Orderr(Order_ID)
);

您在 之后PFOrder_ID NUMBER(3)和之后缺少逗号PFPoduct_ID NUMBER(3)

CREATE TABLE OrderDetails2
(
    PFOrder_ID   NUMBER(3),
    PFProduct_ID NUMBER(3), 
    CONSTRAINT PF   PRIMARY KEY (PFOrder_ID, PFProduct_ID),
    CONSTRAINT FK_1 FOREIGN KEY (PFProduct_ID) REFERENCES Product(Product_ID),
    CONSTRAINT FK_2 FOREIGN KEY (PFOrder_ID)   REFERENCES Orderr(Order_ID)
);

PRIMARY KEY 子句必须与 PFProduct_ID 列分开,因为它是一个复合键。(Orderr拼写是否正确?)而PFProudct_ID在原文中是不正确的。如果您是程序员,则必须能够一致地拼写(即使在更广泛的写作意义上不正确)。

于 2010-12-26T20:47:12.900 回答
2

将最后一个逗号更改为右括号:).

CREATE TABLE OrderDetails2
(
    ...,
    CONSTRAINT FK_2 FOREIGN KEY (PFOrder_ID) REFERENCES Orderr(Order_ID)
)
于 2010-12-26T20:36:11.597 回答