2010-12-17 62 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