如何拥有多个外键?

时间:2017-10-04 12:38:43

标签: sql oracle

我在向表格添加超过1个外键时遇到问题,我收到错误:

"Error report -
ORA-02270: no matching unique or primary key for this column-list
02270. 00000 -  "no matching unique or primary key for this column-list"
*Cause:    A REFERENCES clause in a CREATE/ALTER TABLE statement
           gives a column-list for which there is no matching unique or primary
           key constraint in the referenced table.
*Action:   Find the correct column names using the ALL_CONS_COLUMNS
           catalog view"

我尝试在没有第三个外键的情况下制作表格并且它有效,所以我认为它与最后一个键有关但不太确定。 (我在SQL之间放置了空格以便于阅读。)

CREATE TABLE ORDER(
ORDERID CHAR(4) NOT NULL,
HOUSETYPE CHAR(2),
CHAIR CHAR(2),
PERSON CHAR(2),
PAYDAY DATE,
MENUPRICE NUMBER(4,2),
CONSTRAINT CONFERENCESESSION_PK PRIMARY KEY(ORDERID),
CONSTRAINT CONFERENCESESSION_FK1 FOREIGN KEY(HOUSETYPE) REFERENCES 
    HOUSE(HOUSETYPE),
CONSTRAINT CONFERENCESESSION_FK2 FOREIGN KEY(PAYDAY) REFERENCES PERSON(PAYDAY),
CONSTRAINT CONFERENCESESSION_FK3 FOREIGN KEY(MENUPRICE) REFERENCES 
    MENU(MENUPRICE)
);

2 个答案:

答案 0 :(得分:1)

外键必须引用另一个表主键,我的猜测是你们中的一些外键不引用另一个表的主键。

  

FOREIGN KEY是用于将两个表链接在一起的键。

     

FOREIGN KEY是一个表中的字段(或字段集合)   指另一个表中的PRIMARY KEY。

     

包含外键的表称为子表,和   包含候选键的表称为引用或   父表。

https://www.w3schools.com/sql/sql_foreignkey.asp

答案 1 :(得分:0)

外键必须引用另一个表主键,因此请确保使用主键的正确名称执行此操作。例如:

CONSTRAINT CONFERENCESESSION_FK2 FOREIGN KEY(PAYDAY) REFERENCES PERSON(PAYDAY)

确保在表格PERSONPRIMARY KEY名称为PAYDAY