SQL Server仅对每种类型之一允许为True

时间:2019-04-12 00:12:45

标签: sql sql-server tsql

我有一个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,我希望它失败。

1 个答案:

答案 0 :(得分:8)

您可以使用过滤后的唯一索引:

create unique index unq_sport_isthebest
    on t(sport)
    where isthebest = 1;