KJ3*_*KJ3 3 sql t-sql sql-server
我有一个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 |
Run Code Online (Sandbox Code Playgroud)
我想代替约束,以确保没有其他记录被允许在那里Basketball已IsTheBest设置为true。换句话说,如果我尝试将ID 2编辑为IsTheBest= true,我希望它失败。
您可以使用过滤后的唯一索引:
create unique index unq_sport_isthebest
on t(sport)
where isthebest = 1;
Run Code Online (Sandbox Code Playgroud)