sql – 在多列上检查CONSTRAINT

前端之家收集整理的这篇文章主要介绍了sql – 在多列上检查CONSTRAINT前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用sql Server 2008

我在同一个表中的多个列上使用CHECK CONSTRAINT来尝试验证数据输入.

我收到一个错误

Column CHECK constraint for column
‘AAAA’ references another column,
table ‘XXXX’.

CHECK CONSTRAINT不这样工作.

在没有使用FK的情况下在单个表上实现这一点的任何其他方法

谢谢

这里是我的代码示例

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

解决方法

是的,在表级别定义检查约束
  1. CREATE TABLE foo (
  2. bar int NOT NULL,fred varchar(50) NOT NULL,CONSTRAINT CK_foo_stuff CHECK (bar = 1 AND fred ='fish')
  3. )

您将内部声明为列约束

  1. ...
  2. fred varchar(50) NOT NULL CONSTRAINT CK_foo_fred CHECK (...)
  3. ...

编辑,更容易发布比描述.修正你的逗号

  1. CREATE TABLE dbo.Test
  2. (
  3. EffectiveStartDate dateTime2(2) NOT NULL,EffectiveEndDate dateTime2(2) NOT NULL,--need comma
  4. CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate) --no comma
  5. );

当然,问题仍然是你使用一个CHECK约束,它应该是一个FK约束?

猜你在找的MsSQL相关文章