[英]Foreign_Key reference to part of Composite Primary_Key
我有三个表如下:
Country
{
CountryCode Char(3) NOT NULL PRIMARY KEY,
CountryName VARCHAR(50)
}
PostalCode
{
PostalCode VARCHAR(10),
CountryCode Char(3),
CONSTRAINT PK_PostalCode
PRIMARY KEY (PostalCode,CountryCode)
}
Ticket
{
TicketID INT NOT NULL PRIMARY KEY,
PostalCode VARCHAR(10),
CountryCode Char(3)
}
我很容易使Ticket
表中的CountryCode
成为Country
表的外键引用:
ALTER TABLE Ticket
ADD CONSTRAINT FK_CountryCode
FOREIGN KEY (CountryCode) REFERENCES Country(CountryCode);
但是,当我尝试设置PostalCode
在Ticket
表作为外键引用PostalCode
表:
ALTER TABLE Ticket
ADD CONSTRAINT FK_PostalCode
FOREIGN KEY (PostalCode) REFERENCES PostalCode(PostalCode);
我收到一条错误消息:
引用的表'PostalCodes'中没有与外键'FK_PostalCode'中的引用列列表匹配的主键或候选键
我知道这是因为PostalCode
是PostalCode
表中复合PK的一部分 - 我该如何解决这个问题?
你不能仅引用主键的一部分 - 它是一个全有或全无的选择,没有中间地带:要么引用WHOLE主键(通过在外键中使用PostalCode
和 CountryCode
),如下所示:
ALTER TABLE Ticket
ADD CONSTRAINT FK_PostalCode
FOREIGN KEY (PostalCode, CountryCode) REFERENCES PostalCode(PostalCode, CountryCode);
或者你根本不参考PostalCode
表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.