fdk*_*fsf 6 sql t-sql sql-server unique-constraint sql-server-2008
我有一个看起来像这样的表:
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
Run Code Online (Sandbox Code Playgroud)
如您所见,FloorNum/BedNum组合2/215有两行,其中IsActive等于1.这不可能发生.
另一方面,一个FloorNum/BedNum组合可以有许多行,其中IsActive等于0.
如何向表中添加约束,以便FloorNum/BedNum组合只能有一行IsActive = 1?
任何帮助表示赞赏.
您可以使用WHERE子句创建筛选的唯一索引.
CREATE UNIQUE NONCLUSTERED INDEX IX_[index name]_FloorNum_BedNum ON [myTable] (
FloorNum ASC,
BedNum ASC)
WHERE (IsActive = 1)
Run Code Online (Sandbox Code Playgroud)
这只会考虑IsActive列设置的记录1.
根据您的描述,我认为ClientId在此示例中没有必要,但如果我错了,您也可以将它添加到索引中.
| 归档时间: |
|
| 查看次数: |
1728 次 |
| 最近记录: |