[英]How can i fix A column referencing multiple tables?
我有4张桌子:
ConditionalOffer
(PK ID、描述等)UnconditionalOffer
(PK ID、描述、...)Offer
(PK ID、报价外键参考条件有条件的Offer.ID、报价外键参考无条件的Offer.ID)Applicant
(ID, Offer FOREIGN KEY REFERENCES Offer.ID,...) 我知道我的代码在表Offer
是错误的,因为一列不能引用多个表。 我怎样才能解决这个问题?
一列可以是多个外键约束的一部分,但您的语法不正确,因为您两次指定源列。
相反,要么使用像这样的内联约束:
create table Offer (
ID int primary key,
Offer int
FOREIGN KEY (offer) REFERENCES ConditionalOffer (ID),
FOREIGN KEY (offer) REFERENCES UnconditionalOffer (ID)
);
或者使用明确命名的约束(这可能更干净):
create table Offer (
ID int primary key,
Offer int,
constraint fk_cond FOREIGN KEY (offer) REFERENCES ConditionalOffer (ID),
constraint fk_uncond FOREIGN KEY (offer) REFERENCES UnconditionalOffer (ID)
);
虽然这是可能的,但它确实引发了关于数据库设计的问题: ConditionalOffer 和 UnconditionalOffer 中的 ID 真的相同吗? 它们是如何保持同步的? 如果这些表共享主键(将差异重构为其他表),它们不应该是一个实体吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.