【问题标题】:SQL CHECK constraint issuesSQL CHECK 约束问题
【发布时间】: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' 时出错。是否要编辑约束?”

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

【问题讨论】:

    标签: sql sql-server sql-server-2008 constraints check-constraints


    【解决方案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

      【讨论】:

        猜你喜欢
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多