SQL触发器插入

时间:2010-06-22 13:04:01

标签: sql sql-server-2000 triggers

设置触发器以获取表中的所有新行并将其插入工作队列表的最佳方法是什么。

非常感谢 属

3 个答案:

答案 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”会将此作为第一个结果返回:

Create Trigger

除了语法之外,你几乎已经回答了自己的问题。设置一个触发器AFTER INSERT并在其中放入一个insert语句。