SQL CHECK约束问题
问题描述:
我正在使用SQL Server 2008,我有一个包含三列的表:Length
,StartTime
和EndTime
。我想就这个表,说CHECK约束:SQL CHECK约束问题
if Length == NULL then
StartTime <> NULL and EndTime <> NULL
else
StartTime == NULL and EndTime == NULL
我已经开始尝试这样的事情:
Length == NULL AND StartTime <> NULL AND EndTime <> NULL
这显然是不够的,但即使这样简单的表达式不验证。我得到的错误:
"Error validating 'CK_Test_Length_Or_Time'. Do you want to edit the constraint?"
任何想法如何去做到这一点?
答
SQL Server中没有==运算符。虽然检查空,你必须用 “是”
请试试这个:
((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
答
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))