我有一个SQL Server表,在这里我只希望允许每种类型中的一种为真。例如,如果我具有以下结构:
| 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
的{{1}}设置为true的情况下,不允许其他记录。换句话说,如果我尝试将ID 2编辑为IsTheBest
= IsTheBest
,我希望它失败。
答案 0 :(得分:8)
您可以使用过滤后的唯一索引:
create unique index unq_sport_isthebest
on t(sport)
where isthebest = 1;