2013-03-06 37 views
2

是否有可能具有带两个引用表的外键?带有2个引用表的一个外键表

这里的脚本,我们遇到插入此表

CREATE TABLE Class(
    idNumber varchar(30) not null, 
    day varchar(10) not null, 
    time varchar(20) not null, 
    foreign key(idNumber) REFERENCES ThesisMember(idNumber), 
    foreign key(idNumber) REFERENCES Faculty(idNumber), 
    PRIMARY KEY(idNumber,day,time) 
); 

CONSTRAINT `class_ibfk_1` 
    FOREIGN KEY (`idNumber`) REFERENCES `thesismember` (`idNumber`)) 

SQL语句的一个问题:

INSERT INTO `thesis`.`class` 
    (`idNumber`, `day`, `time`) VALUES ('9990', 'F', '0940-1110') 

系表有 “9990” 的ID号。

+0

这是不可能的。你不能用两个表引用一列。 – 2013-03-06 07:55:03

+0

如果*两个表都与'9990'有一行?这是对两个表的引用吗?还是只有一个?哪一个?我们将如何决定,看看它?那么,MySQL如何决定呢? – 2013-03-06 07:55:42

+0

Works4me:http://sqlfiddle.com/#!2/aecbb – biziclop 2013-03-06 07:58:30

回答

1

FK约束要求字段'idNumber'的每个实例出现在ALL引用的表中。您声明只有一个引用的表具有要插入的值,因此INSERT尝试当然会发生错误。

+0

所以基本上,这是不可能的。我对吗? – Kopaka 2013-03-06 08:43:36

+0

否;可以提供idNumber总是在两个表中都会发生。你应该拥有一个拥有PK idNumber的主表,其中ThesisMember和FacultyMember是关于它的细节表。额外的idType字段将标识idOwner是ThesisMember还是FacutlyMember。 – 2013-03-06 08:48:04

相关问题