2017-03-31 4 views
1

トリガは何らかの理由で4回挿入され、最後のトリガはグループ化されています。基本的には、情報がテーブルに挿入されているときです。tbl_delete_Panelこのデータをグループ化し、グループ化をtbl_delete_panel_Orderinに挿入します。今SQL Server挿入トリガを複数回挿入する

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE Trigger[dbo].[deletePanelSQL] 
ON [dbo].[tbl_delete_Panel] 
AFTER INSERT 
AS 
BEGIN 
    /* Insert Summed Quantity for each stud or track into tbl_delete_panel for deletion. tbl_delete_panel trigger will be triggered */ 
    INSERT INTO tbl_delete_panel_Orderin (Part_Name, OrderID, SumOfQTY) 
     SELECT 
      tbl_delete_panel.Part_Name, tbl_delete_panel.OrderID, 
      Sum(tbl_delete_panel.QTY) AS SumOfQTY 
     FROM 
      tbl_delete_panel 
     GROUP BY 
      tbl_delete_panel.Part_Name, tbl_delete_panel.OrderID; 
END; 
+4

を。あなたが**すべきことは**複数の行を含むことができる 'Inserted'疑似テーブルを見て、それらの行**を挿入することです(トリガをトリガした文によって新たに挿入されました)。毎回**全テーブル**! –

答えて

1

、あなたは行tbl_delete_panelからの完全なセット、このトリガーが起動されるたびに挿入しておきます。

あなたInserted擬似テーブル缶を見ている代わりにを行う必要がありますし、複数の行が含まれます何(あなたが素敵な、適切なセットベースのアプローチとその状況を、処理する必要がない - 何のカーソルを、whileループはありません!) - そして、それらの行(トリガーを引き起こしたステートメントによって新たに挿入された行)を挿入します。

このような何か試してください:あなたは毎回このトリガが呼び出され、tbl_delete_panel` `からの完全な行を挿入しておく

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE Trigger[dbo].[deletePanelSQL] 
ON [dbo].[tbl_delete_Panel] 
AFTER INSERT 
AS 
BEGIN 
    /* Insert summed quantity for each stud or track into tbl_delete_panel for deletion. tbl_delete_panel trigger will be triggered */ 
    INSERT INTO tbl_delete_panel_Orderin (Part_Name, OrderID, SumOfQTY) 
     SELECT 
      Part_Name, OrderID, 
      Sum(QTY) AS SumOfQTY 
     FROM 
      Inserted i 
     GROUP BY 
      Part_Name, OrderID; 
END; 
関連する問題