检查两列的约束

时间:2018-02-28 12:44:13

标签: sql sql-server

我有一个表有两列:RowType(INT)和RefId(INT)。 两列的值均为零或更多。

我需要检查:

If RowType == 1 Then RefId cannot be = 0

最好的方法是什么?

我看到我可以查看

CREATE TABLE (
  ...
  CONSTRAINT MyCheck CHECK (RowType + RefId <> 1)

要做到这一点,但对于这种检查可能是更通用的方法吗?

1 个答案:

答案 0 :(得分:5)

您可以使用check约束:

alter table t add constraint chk_t_2cols
    check (rowtype <> 1 or refid <= 0);

或者,如果您愿意:

alter table t add constraint chk_t_2cols
    check (not (rowtype = 1 and refid > 0) );

注意:如果列可以是NULL,则可能会略有修改。