2009-11-23 19 views
1

我創建一個UPDATE觸發器是這樣的(SQL Server 2005中):SQL觸發1行同時

是行的狀態欄是23或25不更新它。否則更新它。這很簡單。我想

OldState = (Select State from Deleted) 

If OldState in (25,23) 
    Update it --how to do it easily? 
else 
    dont do nothing for this row 

的問題是,觸發器被稱爲與所有更新的行,所以刪除是一組,這意味着第一個指令不和工作,因爲它試圖只得到1的值是得到一套..

這是如此簡單,我錯過了什麼?

非常感謝您

回答

3

此代碼假定:

  • 重點保持不變鏈接「老」和「新」行
  • 你需要簡單的更新後處理

實施例:

UPDATE 
    M --yes, this is correct 
SET 
    SomeCol = SomeValue, 
    ... 
FROM 
    MyTable M 
    JOIN 
    DELETED D ON M.KeyCol = D.KeyCol 
WHERE 
    D.State IN (23, 25) 
+0

哇,你是老闆! 我從來沒有用FROM做過更新,它對我來說是新的! 謝謝!!! – 2009-11-23 12:06:53