【问题标题】:UNIQUE and OR in one SQL Server constraint?一个 SQL Server 约束中的 UNIQUE 和 OR?
【发布时间】:2021-06-28 10:52:33
【问题描述】:

我有一个表,我想要一个检查以下内容的约束(字母是列名,W 是“位”数据类型):

If and only if 'W' = 0, check that X, Y & Z are unique.
Else, allow all new data.

我可以分别执行'W' is FalseCheck X, Y & Z are unique,但合并逻辑以允许上述情况是我无法弄清楚的。

我试过了

W = 1 OR UNIQUE (X, Y, Z)

但 SSMS 说它无效。

提前感谢您的帮助:)

【问题讨论】:

    标签: sql sql-server constraints ssms


    【解决方案1】:

    你不能通过约束来做到这一点。相反,使用过滤的唯一索引:

    create unique index unq_x_w on t(x) where w = 0;
    create unique index unq_y_w on t(y) where w = 0;
    create unique index unq_z_w on t(z) where w = 0;
    

    实际上,以上将您的问题解释为每一列都是独一无二的。如果您希望三元组是唯一的:

    create unique index unq_xyz_w on t(x, y, z) where w = 0;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-20
      • 2016-08-13
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多