SQL检查约束问题

SQL检查约束问题,sql,sql-server,sql-server-2008,constraints,check-constraints,Sql,Sql Server,Sql Server 2008,Constraints,Check Constraints,我使用的是SQL Server 2008,我有一个包含三列的表:Length、StartTime和EndTime。我想在这个表上做一个检查约束,它说: if Length == NULL then StartTime <> NULL and EndTime <> NULL else StartTime == NULL and EndTime == NULL 如果长度==NULL,则 StartTime NULL和EndTime NULL 其他的 StartTim

我使用的是SQL Server 2008,我有一个包含三列的表:
Length
StartTime
EndTime
。我想在这个表上做一个检查约束,它说:

if Length == NULL then
  StartTime <> NULL and EndTime <> NULL
else
  StartTime == NULL and EndTime == NULL
如果长度==NULL,则
StartTime NULL和EndTime NULL
其他的
StartTime==NULL和EndTime==NULL
我开始尝试这样的事情:

Length == NULL AND StartTime <> NULL AND EndTime <> NULL
Length==NULL和StartTime NULL和EndTime NULL
显然这还不够,但即使是这个简单的表达式也无法验证。我得到一个错误:

“验证“检查测试长度”或“时间”时出错。是否要编辑约束?”
有没有关于如何执行此操作的想法?

SQL Server中没有==运算符。检查null时,必须使用“is”

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))
请试试这个:

((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))