SQL Trigger在每个插入上插入超过400条记录

时间:2013-10-15 12:22:47

标签: sql triggers

我试图创建一个触发器,将数据插入到一个表中,从另一个表中也插入了数据,但每次我在主表中添加一条记录,在另一个表中添加超过4000 。以下是我的代码。

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]

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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。 - 注意表名中的命名约定。 :)