-1

我试图创建一个触发器,从另一个表中插入数据到一个表中,该表也刚刚插入了数据,但是每次我在主表中添加一条记录,它在另一个表中添加了超过 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]
4

2 回答 2

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表只会影响行。

您还可以查看使用插入和删除的表

于 2013-10-15T12:25:47.937 回答
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

PS - 注意表名中的命名约定。:)

于 2013-10-15T12:33:23.507 回答