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 に答える