0

我正在使用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编辑:所以虽然没有影响行,但执行异常行为......

4

2 回答 2

0

该问题指出约束是“使用检查”创建的,并且您进一步指出 UPDATE 语句中引用的“col2”值为 0 的记录已经存在。如果禁止 col2=0 的约束是“带检查”执行的,那么它应该在该记录的创建时出错,因此在执行更新时不会留下任何约束。这或许可以解释你所目睹的行为。

于 2012-09-25T14:00:02.633 回答
0

您可以添加commit;以提交您的交易

于 2012-09-25T14:01:00.693 回答