我必须根据以下条件在表上创建一个检查约束。
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
不确定约束中的逻辑是否正确
答案 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