我有4张桌子:
ConditionalOffer
(PK ID,说明,...)UnconditionalOffer
(PK ID,说明,...)Offer
(PK ID,
提供FOREIGN KEY REFERENCES ConditionalOffer.ID,
提供外国参考文献UnconditionalOffer.ID)Applicant
(ID,提供FOREIGN KEY REFERENCES Offer.ID,...)我知道我的代码在表Offer
错了,因为列不能引用多个表。我该如何解决这个问题?
答案 0 :(得分:0)
列可以是多个外键约束的一部分,但是当您指定源列两次时,语法不正确。
相反,要么使用这样的内联约束:
www.url.com/person Person1 www.url.com/Person1 [u'email@address.com']
www.url.com/person Person2 www.url.com/Person1 [u'email@address.com']
www.url.com/person Person3 www.url.com/Person1 [u'email@address.com', u'email@address.com']
www.url.com/person Person1 www.url.com/Person1 [u'email@address.com']
www.url.com/person Person2 www.url.com/Person1 [u'email@address.com']
www.url.com/person Person3 www.url.com/Person1 [u'email@address.com', u'email@address.com']
或使用明确命名的约束(可能更清晰):
create table Offer (
ID int primary key,
Offer int
FOREIGN KEY (offer) REFERENCES ConditionalOffer (ID),
FOREIGN KEY (offer) REFERENCES UnconditionalOffer (ID)
);
虽然这是可能的,但它确实引起了有关数据库设计的问题:ConditionalOffer和UnconditionalOffer中的ID是否真的相同?它们如何保持同步?如果这些表共享主键(差异重构为其他表),那么这些表不应该是一个实体吗?