2014-03-07 48 views
0

問題是我已經插入一個新的行通過過程中有一個AFTER INSERT觸發器的表,我想要做的是隻更新這個新插入的行,雖然觸發器,有沒有辦法做到這一點?SQL Server - 如何通過觸發器只更新插入的錶行?

+0

[SQL插入觸發器來更新INSERTED表值]的可能重複(http://stackoverflow.com/questions/1837475/sql-insert-trigger-to-update-inserted-table-values) – TomTom

回答

1

是的。

您是否試過閱讀文檔?我的意思是,至少一次。

它告訴你觸發器有一個虛擬表(插入)及其處理的所有行(實際上可能不止一個,插入可以覆蓋多於一行),然後你可以使用標準SQL這(即在真正的表中找到更新的行,然後更新它們)?

你的問題是一個簡單的標準教程觸發第1章

一點谷歌賦的典型例子 - 「TSQL觸發更新插入表」。

項目1:http://technet.microsoft.com/en-us/library/ms191300.aspx,名爲「使用inserted和deleted表」

你也可以只使用搜索這裏不是要求。

SQL Insert trigger to update INSERTED table values

+0

很好的答案!除了我的話之外,當你更新行(vales)時,SQLServer的工作流首先刪除原始行(值),將它們放在名爲'「DELETED''的虛擬表中,然後把新行(值)在'「INSERTED」'(另一個虛擬表)中。在交易完成之前永久不會對磁盤​​進行修改。 – vicd

+0

但是,如果我的列值沒有使行是唯一的,那麼SQL中會有什麼會告訴我這個特定的行被插入。 – steave

+2

@steave這被稱爲「設計錯誤」。所有的行應該有一個主鍵 - 每個定義 - 是唯一的。 – TomTom