我使用SQL Server 2008

我在同一表的多个列上使用了CHECK CONSTRAINT,以尝试验证数据输入。

我收到一个错误:



CHECK CONSTRAINT不能以这种方式工作。

还有其他方法可以在不使用FK的情况下在单个表上实现此功能吗?

谢谢

这是我的代码示例

CREATE TABLE dbo.Test
(
EffectiveStartDate  dateTime2(2)        NOT NULL,
EffectiveEndDate    dateTime2(2)        NOT NULL
    CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate),
);

最佳答案

是的,在表级别定义CHECK CONSTRAINT

CREATE TABLE foo (
   bar int NOT NULL,
   fred varchar(50) NOT NULL,

   CONSTRAINT CK_foo_stuff CHECK (bar = 1 AND fred ='fish')
)

您将其内联声明为列约束
...
fred varchar(50) NOT NULL CONSTRAINT CK_foo_fred CHECK (...)
...

编辑,比描述容易发布。修复了逗号。
CREATE TABLE dbo.Test
(
  EffectiveStartDate  dateTime2(2)        NOT NULL,
  EffectiveEndDate    dateTime2(2)        NOT NULL,  --need comma
  CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate) --no comma
);

当然,问题仍然存在,您是在使用CHECK约束还是FK约束?

关于sql - 检查多列约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3438066/

10-14 14:56