繁体   English   中英

Foreign_Key引用Composite Primary_Key的一部分

[英]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);

但是,当我尝试设置PostalCodeTicket表作为外键引用PostalCode表:

ALTER TABLE Ticket 
ADD CONSTRAINT FK_PostalCode
    FOREIGN KEY (PostalCode) REFERENCES PostalCode(PostalCode);

我收到一条错误消息:

引用的表'PostalCodes'中没有与外键'FK_PostalCode'中的引用列列表匹配的主键或候选键

我知道这是因为PostalCodePostalCode表中复合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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM