我试图创建一个触发器,将数据插入到一个表中,从另一个表中也插入了数据,但每次我在主表中添加一条记录,在另一个表中添加超过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]
答案 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
表只会影响行。
答案 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。 - 注意表名中的命名约定。 :)