2014-04-28 35 views
0

這裏多個條目的情況:觸發 - inserted表

當處理通過我們的會計應用程序中的採購訂單,將其插入進入INVNUM表,然後做對插入的條目數的更新。我有一個觸發器,它將根據INVNUM表中的記錄插入/更新將記錄插入另一個表中。

我遇到的問題是有許多更新它上一個條目,它似乎像它的最後兩個更新是完全一樣的,從而下了扳機插入兩個條目,因爲它不能區分兩次更新之間(兩個數據完全匹配)。

所以基本上我想插入我的記錄基於該採購訂單的INVNUM表中的最後更新。

這裏的東西,我拿出來嘗試並隔離在插入表中的最後一項:

Declare cur1 scroll cursor for (select * from Inserted) 
    Open cur1 

    FETCH LAST FROM cur1 
    While @@FETCH_STATUS = 0 

    Begin  
    Insert into JCTxLines (ID, JobID, iSource) 
    Values(3696,2,3) 

    End 

Close cur1 
Deallocate Cur1 

此代碼然而掛起系統,我需要關閉的出來。

不知道這是否是解決問題的正確方法。我一直在研究幾天,我對插入/刪除表的理解仍然有限。

乾杯!

回答

0

您在插入後忘記了FETCH NEXT,這是導致觸發器掛起的原因。

你也可以嘗試選擇TOP 1 FROM INSERTED?

DECLARE int 
DECLARE icursor CURSOR FOR SELECT TOP 1 AutoIndex FROM INSERTED 
OPEN icursor 
FETCH NEXT FROM icursor INTO 
WHILE @ = 0 
BEGIN 
    Insert into JCTxLines (ID, JobID, iSource) Values(3696,2,3) 
    FETCH NEXT FROM icursor INTO 
END 
CLOSE icursor 
DEALLOCATE icursor 

你甚至可以做SELECT DISTINCT從安裝