我正在尝试在sql server 2008上添加检查约束。运行此代码时出现以下错误:
alter table db.dbo.myTable add constraint
noWWWifProgramIsKnown check
(dbo.checkcountuniversalservice(A, B,
C)=0 and program='WWW' )
引发错误:
ALTER TABLE语句与CHECK约束冲突 “noWWWifProgramIsKnown”。冲突发生在数据库中 “db”,表“dbo.tableuniversalservice”。
Marc_s'对SO的回答说这可能是b / c某行违反了约束: The ALTER TABLE statement conflicted
但是,没有行违反约束,因为它返回0:
select COUNT(*) from db.dbo.tableuniversalservice
where
(dbo.checkcountuniversalservice(A, B, C)=0
and
program='WWW'
)
我错过了什么?
答案 0 :(得分:3)
我认为您的检查是向后的...为了使约束通过,它应该评估为TRUE
或UNKNOWN
。您的SELECT
语句告诉您没有行符合约束,而不是告诉您没有行违反约束。
CHECK约束拒绝评估为FALSE的值。