2009-08-25 140 views
0

我目前沒有在測試任何一個位置,但想知道這是否是一個選項,所以我可以開始在我的腦海中設計解決方案。帶有更新語句的SQL Server 2005插入觸發器

我想在表上創建一個插入觸發器。在這個插入觸發器中,我想從inserted虛擬表中獲取值並使用它們來更新同一個表。這會工作還是會進入某種無限循環(即使觸發器不適用於更新命令)。

作爲一個例子,如果插入一行(它代表供應商的新費率/成本),我想更新同一張表以過期該供應商的舊費率/成本。與更新已存在的記錄相比,到期時間是必要的,因此可以保留費率/成本的歷史記錄以用於報告目的(更不用說當前的報告基礎架構期望發生這種類型的事情,並且我們正在將當前報告/數據遷移到SQL服務器)。

謝謝!

回答

1

如果你有只有 INSERT觸發器和沒有更新觸發器,那麼沒有任何問題,但我想你也想趕上UPDATE甚至DELETE。

INSTEAD OF觸發器保證不會表現遞歸:

如果INSTEAD上 表中定義的觸發器執行對 表的語句是通常會再次觸發 INSTEAD OF觸發器,觸發 不遞歸

調用和INSTEAD OF觸發器必須做對原始INSERT和你想要的更新。

+0

我實際上並沒有計劃在這個表上使用更新觸發器,因爲它被訪問的方式和授予可訪問權限的方式,所以它聽起來像我是明確的。我並不知道INSTEAD OF,所以這也是很好的信息。謝謝! – thomas 2009-08-26 01:13:37

0

這聽起來不像是對我造成任何問題,只要你在另一個UPDATE觸發器中沒有執行INSERT。

+0

沒有在更新中做任何插入......感謝您的答案。 – thomas 2009-08-26 01:14:07