【问题标题】:Add unique constraint depending on value in SQL根据 SQL 中的值添加唯一约束
【发布时间】:2013-09-15 05:21:39
【问题描述】:

我有一种情况,我只想在其他字段中有特定值时才添加唯一约束 例如表格是 ID 分类名称 姓名 价值 类别ID

约束将在 ID、CategoryName 和 Name 上仅为 CategoryID 为 0

有可能吗?

【问题讨论】:

  • ID 始终是唯一的。包含它没有意义。

标签: sql sql-server


【解决方案1】:
CREATE UNIQUE NONCLUSTERED INDEX [UQ_ID_CategoryName_Name, CategoryName, Name] ON TableName 
(
    ID, CategoryName, Name
)
WHERE (CategoryID = 0)

【讨论】:

    【解决方案2】:

    实现此目的的一种方法是使用两张表,一张用于categoryId0,一张用于其余的。您可以在第一个表上定义唯一性约束,并在您想将它们用作单个表时随时使用视图和联合。

    【讨论】:

      【解决方案3】:

      Name 上为CategoryID = 0 创建一个过滤的唯一索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-23
        相关资源
        最近更新 更多