我有以供应商 ID 作为主键的供应商表。我有一个供应商类型列,可以是航空公司 (AL)、酒店 (HT)、旅游 (T)。
对于供应商类型航空公司 (AL),我希望airline_type
和airline_abbr
列是复合唯一的,并且airline_type
和airline_iata_code
是复合唯一的。
我不想将其设置为主键,因为已经声明了主键。
怎么办?有什么想法或建议吗?
谢谢,
我有以供应商 ID 作为主键的供应商表。我有一个供应商类型列,可以是航空公司 (AL)、酒店 (HT)、旅游 (T)。
对于供应商类型航空公司 (AL),我希望airline_type
和airline_abbr
列是复合唯一的,并且airline_type
和airline_iata_code
是复合唯一的。
我不想将其设置为主键,因为已经声明了主键。
怎么办?有什么想法或建议吗?
谢谢,
您可以在表上创建唯一的过滤索引:
CREATE UNIQUE NONCLUSTERED INDEX IX_Airline_TypeAbbr
ON dbo.Supplier (airline_type, airline_abbr)
WHERE supplier_type = 'AL'
CREATE UNIQUE NONCLUSTERED INDEX IX_Airline_TypeIataCode
ON dbo.Supplier (airline_type, airline_iata_code)
WHERE supplier_type = 'AL'
您可以在 Pinal Dave关于该主题的优秀博客文章中阅读更多关于过滤索引是什么以及如何使用它们的信息