我正在使用constraint
强制在sql server 2008数据库中使用业务规则,
alter table TableName with check
Add check
(
(col1 = 1 and col2 > 0)
or
col1 = 0
)
当我尝试在Management Studio中执行插入查询时
update TableName set col1 = 1 where Id = 1; --the col2 =0 so it is not valid according to above constraint
执行后,我收到消息(1 row(s) affected)
,没有任何错误消息!!
但实际上当我检查表中的数据时,它没有改变(这是正确的动作)。
编辑:所以使用1 row(s) affected
执行异常行为,尽管没有行影响...
答案 0 :(得分:0)
问题表明约束是“使用check”创建的,并且您进一步声明UPDATE语句中引用的“col2”值为0的记录已经存在。如果禁止col2 = 0的约束“with check”,则它应该在该记录的创建时出错,因此在执行更新时不会产生任何约束。这可能解释了你所目睹的行为。
答案 1 :(得分:0)
您可以添加commit;
以提交交易