我有一个看起来像这样的表:
ClientId FloorNum BedNum IsActive
11 2 212 1
12 2 214 0
12 2 214 1
13 2 215 0
13 2 215 0
13 2 215 0
13 2 215 0
13 2 215 1
12 2 215 1
如您所见,FloorNum/BedNum组合2/215具有两行,其中IsActive等于1。这不会发生。
另一方面,一个FloorNum/BedNum组合可以包含IsActive等于0的许多行。
如何为表添加约束,以便FloorNum/BedNum组合只能包含IsActive = 1的一行?
任何帮助表示赞赏。
最佳答案
您可以使用WHERE子句创建a filtered unique index。
CREATE UNIQUE NONCLUSTERED INDEX IX_[index name]_FloorNum_BedNum ON [myTable] (
FloorNum ASC,
BedNum ASC)
WHERE (IsActive = 1)
这只会考虑
IsActive
列设置为1
的记录。根据您的描述,我认为在此示例中不需要
ClientId
,但是如果我错了,也可以将其添加到索引中。关于sql - 添加特殊约束以避免在这种情况下重复行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36696418/