触发器 - 插入表中的多个条目

时间:2014-04-28 00:52:54

标签: sql triggers

这里的情景:

通过我们的会计应用程序处理采购订单时,它会将该条目插入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

然而,这段代码会挂起系统,我需要关闭它。

不确定这是否是解决问题的正确方法。我现在已经研究了几天,我对插入/删除表的理解仍然有限。

干杯!

1 个答案:

答案 0 :(得分:0)

您在插入后忘记了FETCH NEXT,这是导致触发器挂起的原因。

您还可以尝试选择TOP ON 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 FROM INSERTED