我使用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约束?