2013-10-15 106 views
-1

我試圖創建一個觸發器,將數據插入到表中,從另一個表中也插入了數據,但每個時間片我都在主表中添加一條記錄,在另一個表中增加了4000多個。以下是我的代碼。SQL觸發器插入每個插入400多條記錄

USE [TeesdockDB new ] 

ALTER TRIGGER [dbo].[B/WeigherUpdate] ON [dbo].[TBL Combined Board and Reg] 
After INSERT AS 
    INSERT INTO [TBL B/Weigher](Pronumber,CargoCode,[B/weigher],Tonnes) 
    SELECT Pronumber,CargoRef,[B/Weigher],Tonnes 
    FROM [TBL Combined Board and Reg] 
+0

請不要在對象名稱中使用空格和斜線和特殊字符作爲列... –

+3

您正在選擇從該表格中插入到其他表格中的所有內容;如果您只想要新插入的行,則需要一個條件來將結果集過濾爲只有該行。 –

+0

我正在重新設計一箇舊的數據庫,因此我沒有定義名稱,但是您的註釋並沒有幫助解決問題。 – Rob

回答

4

如果要過濾添加的行添加WHERE子句。 Inserted表將保存插入的數據,因此您可能需要使用它。

喜歡的東西:

USE [TeesdockDB new ] 

ALTER TRIGGER [dbo].[B/WeigherUpdate] ON [dbo].[TBL Combined Board and Reg] 
After INSERT AS 
    INSERT INTO [TBL B/Weigher](Pronumber,CargoCode,[B/weigher],Tonnes) 
    SELECT Pronumber,CargoRef,[B/Weigher],Tonnes 
    FROM Inserted 

我知道我沒有使用WHERE,但Inserted表將只具有影響的行。

你也可以看看Use the inserted and deleted Tables

+0

你贏了幾秒;) – vendettamit

1

您可以使用Inserted包含新添加記錄的表。

這是您的更新查詢。但是使用Where條件來獲取最近插入的記錄。

ALTER TRIGGER [dbo].[B/WeigherUpdate] ON [dbo].[TBL Combined Board and Reg] 
After INSERT AS 
    INSERT INTO [TBL B/Weigher](Pronumber,CargoCode,[B/weigher],Tonnes) 
    SELECT Pronumber,CargoRef,[B/Weigher],Tonnes 
FROM INSERTED 

P.S. - 照顧你的表名中的命名約定。 :)