【发布时间】:2014-05-12 03:56:19
【问题描述】:
我在 SQL Server 2012 中有一个表,其中包含两个国家/地区的列,我们称它们为 CountryA 和 CountryB。
CREATE TABLE dbo.AgreementParticipants
(
AgreementParticipantsID INT NOT NULL PRIMARY KEY IDENTITY,
CountryA CHAR(3) NOT NULL FOREIGN KEY REFERENCES dbo.Country (CountryCode),
CountryB CHAR(3) NOT NULL FOREIGN KEY REFERENCES dbo.Country (CountryCode)
);
注意:该表已针对示例进行了简化,但重要的是始终定义两个实体之间的双边关系。碰巧在这种情况下是两个国家。
典型数据:
1 AUS USA
2 USA NZL
业务规则:
- 总会有两个县。
- 这两个国家可以按任意顺序排列。位置 A 或 B 没有意义。
- 两个国家/地区的每个组合对表来说必须是唯一的。因此,AUS USA 被认为与 USA AUS 相同。
- 这两个国家永远不会相同。
问题:
执行唯一性约束的最有效方法是什么?
目前,我考虑过使用触发器或复杂的检查约束,但是这两种解决方案都不优雅,所以我希望社区提供一些意见。
【问题讨论】:
标签: sql sql-server