【问题标题】:SQL Server Only Allow True for One of Each TypeSQL Server 仅允许每种类型中的一种为 True
【发布时间】:2019-04-12 08:14:22
【问题描述】:

我有一个 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 |

我想要一个约束来确保在BasketballIsTheBest 设置为true 时不允许其他记录。换句话说,如果我尝试将 ID 2 编辑为 IsTheBest = true,我希望它失败。

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多