SQL CHECK 约束问题

Posted

技术标签:

【中文标题】SQL CHECK 约束问题【英文标题】:SQL CHECK constraint issues 【发布时间】:2010-04-16 11:35:54 【问题描述】:

我使用的是 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' 时出错。是否要编辑约束?”

关于如何进行此操作的任何想法?

【问题讨论】:

【参考方案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 约束问题的主要内容,如果未能解决你的问题,请参考以下文章

怎样在sql中创建check约束

sql设置check约束数据不能为中文

SQL中的check约束

SQL Server 条件 CHECK 约束

SQL Server创建 学号 性别 课程编号 check约束 主键约束 UNIQUE约束

哪些 SQL 数据库支持 CHECK 约束中的子查询?