3

LengthSQL Server 2008を使用していて、、、およびの3つの列を持つテーブルがStartTimeありEndTimeます。このテーブルに次のようなCHECK制約を作成したいと思います。

if Length == NULL then
  StartTime <> NULL and EndTime <> NULL
else
  StartTime == NULL and EndTime == NULL

私はこのようなことを試み始めました:

Length == NULL AND StartTime <> NULL AND EndTime <> NULL

明らかにこれでは十分ではありませんが、この単純な式でさえ検証されません。エラーが発生します:

「'CK_Test_Length_Or_Time'の検証中にエラーが発生しました。制約を編集しますか?」

これを行う方法について何かアイデアはありますか?

4

2 に答える 2

4
CHECK ([Length] IS NULL AND [StartTime] IS NOT NULL AND [EndTime] IS NOT NULL
      OR [Length] IS NOT NULL AND [StartTime] IS NULL AND [EndTime] IS NULL))
于 2010-04-16T11:42:20.923 に答える
3

SQLServerには==演算子はありません。nullをチェックするときは、「is」を使用する必要があります

これを試してください:

((Length is null AND starttime is not null AND endtime is not null) OR
(Length is not null AND starttime is null AND endtime is null))

HTH

于 2010-04-16T11:47:24.243 に答える