当新数据导入table1时,触发自动将几列从table1复制到table2

时间:2012-08-20 20:54:06

标签: sql sql-server-2008 triggers

我有table1列(date, field1, field2, field3, field4, field5, field6, field7, field8

我有另一个table2列(date, field1,someothercolumns, field3, field5, field7, unrelatedcolumns1, someothercolumns2

现在每次将新数据导入table2时,我都希望来自date, field1, field3, field5, field7的列(table2)的数据自动复制到table1({{ 1}})。

date, field1, field3, field5, field7中缺少的列可以包含空值

是否可以使用触发器或任何存储过程?

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

CREATE TRIGGER YourTriggerName
ON dbo.Table2
AFTER INSERT 
AS BEGIN

   INSERT INTO dbo.Table1(date, field1, field3, field5, field7)
     SELECT
         date, field1, field3, field5, field7
     FROM
         Inserted
END

在触发器中,您可以访问包含受影响的所有行的“伪”表Inserted(以及DeletedUPDATE触发器的DELETE)导致触发器触发的声明。

这很重要:如果你有一个插入10行的INSERT语句,你的触发器将触发一次,伪表Inserted将包含10行。不要假设你的触发器每插入一次就触发一次 - 事实并非如此。

因此,在此触发器中,每当INSERT进入table2时,相关列都会从Inserted伪表中提取并插入table1

这能解决您的问题吗?