设置触发器以获取表中的所有新行并将其插入工作队列表的最佳方法是什么。
非常感谢 属
答案 0 :(得分:2)
回答你提出的问题
CREATE TRIGGER dbo.tr_i_BaseTable
ON dbo.BaseTable
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO WorkTable
SELECT * FROM INSERTED
END
但是,不是实际重复两次行,而是不能使用行的某些其他属性来检测应被视为工作表一部分的“新”属性。例如ID或添加“插入”日期/时间字段。
或者另一种方法可能是重新开始使用新的WorkTable并考虑所有以前的记录都要归档。您可以为需要在整合集上工作的那些查询创建一个(可能是分区的)视图UNION ALL
-
答案 1 :(得分:1)
使用此触发器:
CREATE TRIGGER InsertIntoWorkingTable
ON VeryOldHugeDatabaseTable
INSTEAD OF INSERT
AS
insert into WorkingTable (column1, column2, column3...) (
select column1, column2, column3
from inserted
)
您所要做的就是继续插入 VeryOldHugeDatabaseTable 。触发器将忙于插入此工作表。
有一段时间,您只需通过作业或类似的东西启动存储过程即可从工作表中插入或存档到此旧表中。
答案 2 :(得分:0)
搜索“t-sql trigger”会将此作为第一个结果返回:
除了语法之外,你几乎已经回答了自己的问题。设置一个触发器AFTER INSERT并在其中放入一个insert语句。