检查约束无效

时间:2014-08-12 13:16:15

标签: sql sql-server sql-server-2008 check-constraint

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

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

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

2 个答案:

答案 0 :(得分: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) )

答案 1 :(得分:0)

ColumnX != 1 or ColumnY is not null