【问题标题】:One Foreign Key with 2 References Table一个外键和 2 个引用表
【发布时间】:2013-03-06 07:54:08
【问题描述】:

是否可以有两个引用表的外键?

这是脚本,我们在插入此表时遇到问题

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')

Faculty 表的 idNumber 为“9990”。

【问题讨论】:

  • 这是不可能的。你不能用两个表引用一列。
  • 如果两个表都有一行9990怎么办?这是对两个表的引用吗?还是只给一个?哪一个? 我们会如何决定,看看它?那么,MySQL 将如何决定呢?
  • 只是通过尝试来确定是否可能更容易吗?
  • 工作正常here

标签: mysql sql


【解决方案1】:

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

【讨论】:

  • 否;有可能提供 idNumber 总是会出现在两个表中。您应该有一个拥有 PK idNumber 的主表,而 ThesisMember 和 FacultyMember 是其中的明细表。额外的 idType 字段将标识 idOwner 是 ThesisMember 还是 FacutlyMember。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
相关资源
最近更新 更多