我使用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/