2010-12-17 66 views
1

我有以下SQL用例(使用MS SQL)更新询问

UPDATE AR_Slots 
SET Running = @Running, 
StopSignal = @StopSignal, 
WHERE (SlotId = @SlotId) 

我想如果运行参数(布尔)到一个名为RunListID字段设置为0是真实的,否则我不想根本改变这个值。

这样做的“正确”方法是什么?

感谢, 斯特凡

回答

3

试着这么做

UPDATE AR_Slots 
SET RunListID = 
    CASE 
     WHEN <your check value> 
      THEN 0 
     ELSE RunListID 
    END, 
    <your other sets> 
WHERE <your criteria> 
+1

我同意上述方案是可行的。我会补充说,即使将RunListID设置回原来的值也会被视为对数据库的更改。如果索引或触发器与此字段关联,则if将重建索引或执行触发器。因此,如果性能很关键,为此更新设置单独的SQL可能是一个选项。 – 2010-12-17 11:33:44

+0

谢谢!我不确定我可以使用实际的RunListID,然后重新设置它。 – StefanE 2010-12-17 11:45:23