我有一个SQL Server表,我只希望每种类型中的一种都允许为true。例如,如果我具有以下结构:
| ID | Sport | IsTheBest |
|:-----|------------|------------:|
| 1 | Basketball | 1 |
| 2 | Basketball | 0 |
| 3 | Basketball | 0 |
| 4 | Basketball | 0 |
| 5 | Baseball | 0 |
| 6 | Baseball | 1 |
| 7 | Baseball | 0 |
我想要一个约束来确保在
Basketball
的IsTheBest
设置为true的情况下,不允许其他记录。换句话说,如果我尝试将ID 2编辑为IsTheBest
= true
,那么我希望它失败。 最佳答案
您可以使用过滤后的唯一索引:
create unique index unq_sport_isthebest
on t(sport)
where isthebest = 1;