2

我必须根据以下条件在表上创建一个检查约束。

1. 如果 ColumnX=1 那么 ColumnY 不应该为 NULL

2. 如果 ColumnX<>1 那么 ColumnY 可以为 NULL

我在下面尝试过,似乎没有检查值。

ALTER TABLE [dbo].[MyTable]  WITH NOCHECK ADD  CONSTRAINT [CK_MyTable_1] 

CHECK  (ColumnX<>1 OR(ColumnX=1 AND (ISNULL(ColumnY,0) <> 0)))
GO

ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [CK_MyTable_1]
GO

不确定约束中的逻辑是否正确

4

2 回答 2

2

怎么样:

CHECK ( ColumnX <> 1 OR (ColumnX = 1 AND ColumnY is not null) )

如果ColumnX可以NULL,您可能想要:

CHECK ( ColumnX <> 1 OR ColumnX is null OR (ColumnX = 1 AND ColumnY is not null) )
于 2014-08-12T13:18:52.820 回答
0
ColumnX != 1 or ColumnY is not null
于 2014-08-12T13:23:38.273 回答