SQL CHECK 约束问题
Posted
技术标签:
【中文标题】SQL CHECK 约束问题【英文标题】:SQL CHECK constraint issues 【发布时间】:2010-04-16 11:35:54 【问题描述】:我使用的是 SQL Server 2008,我有一个包含三列的表:Length
、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' 时出错。是否要编辑约束?”
关于如何进行此操作的任何想法?
【问题讨论】:
【参考方案1】: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))
【讨论】:
【参考方案2】: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))
HTH
【讨论】:
以上是关于SQL CHECK 约束问题的主要内容,如果未能解决你的问题,请参考以下文章