3

我正在使用 SQL Server 2008,并且我有一个包含三列的表LengthStartTimeEndTime. 我想在这个表上做一个 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

SQL Server 中没有 == 运算符。在检查 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))

高温高压

于 2010-04-16T11:47:24.243 回答