Foreign_Key 引用 Composite 的一部分 Primary_Key

Foreign_Key reference to part of Composite Primary_Key

我有3个table如下:

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 table 中使 CountryCode 成为对 Country table:

的外键引用
ALTER TABLE Ticket 
ADD CONSTRAINT FK_CountryCode
    FOREIGN KEY (CountryCode) REFERENCES Country(CountryCode);

但是当我尝试将 Ticket table 中的 PostalCode 设置为 PostalCode 的外键引用时 table:

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

我收到一条错误消息:

There are no primary or candidate keys in the referenced table 'PostalCodes' that match the referencing column list in the foreign key 'FK_PostalCode'

我知道这是因为 PostalCodePostalCode 中复合 PK 的一部分 table - 我该如何解决这个问题?

不能 仅引用主键的一部分 - 它是全有或全无没有中间立场的选择:要么你引用 WHOLE 主键(通过同时使用 PostalCode CountryCode 在你的外键中)像这样:

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

或者您 根本不 引用 PostalCode table。