【发布时间】:2011-03-06 19:40:16
【问题描述】:
设置触发器以获取表中的所有新行并将它们插入工作队列表的最佳方法是什么。
非常感谢 Sp
【问题讨论】:
-
您使用什么 RDBMS 和版本?触发器语法各不相同。您最好只跟踪最近处理的 ID 或为此添加一个日期时间列?
-
对不起,这是一个 sql server 2000 数据库
标签: sql sql-server-2000 triggers
设置触发器以获取表中的所有新行并将它们插入工作队列表的最佳方法是什么。
非常感谢 Sp
【问题讨论】:
标签: sql sql-server-2000 triggers
使用此触发器:
CREATE TRIGGER InsertIntoWorkingTable
ON VeryOldHugeDatabaseTable
INSTEAD OF INSERT
AS
insert into WorkingTable (column1, column2, column3...) (
select column1, column2, column3
from inserted
)
您所要做的就是继续插入您的VeryOldHugeDatabaseTable。触发器将忙于插入此工作表。
有时,您可以简单地通过作业或类似的方式启动存储过程,以便从工作表插入或归档到这个旧表中。
【讨论】:
【讨论】:
回答你提出的问题
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-为需要在合并集上工作的那些查询创建 2 个表。
【讨论】: