微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 在多列上检查CONSTRAINT

我使用sql Server 2008

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

我收到一个错误

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

CHECK CONSTRAINT不这样工作.

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

谢谢

这里是我的代码示例

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

解决方法

是的,在表级别定义检查约束
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约束?

原文地址:https://www.jb51.cc/mssql/82354.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐