SQL SERVER批量往一张表中写入数据时,这张表有一个触发器,触发器的内容就是将写入的数据写到另一张表

SQL SERVER批量往一张表中写入数据时,这张表有一个触发器,触发器的内容就是将写入的数据写到另一张表.
批量写入时,两张表的记录是否相同。

怎么批量写入我都不会,还要写触发器怎么写啊。那位朋友来指导指导。

1)批插入:
一般批量写入数据,是将一个数据集写入到表中

比如,A表(C1,C2,C3)
全部是int
我想将100,99,98写入到A表的C1,C2,C3字段中,写入3行
执行批插入代码:
insert into A表 select 100,99,98 union all select 100,99,98 union all select 100,99,98

以上代码中:
select 100,99,98 union all select 100,99,98 union all select 100,99,98
是一个结果集:

----------- ----------- -----------
100 99 98
100 99 98
100 99 98

(所影响的行数为 3 行)

执行批插入代码后,一次批插入了3行数据

如果数据是来自一张表,举例说下:
B表(D1,D2,D3)
已有数据3行:
101,102,103
91,92,93
81,82,83
将B表的数据批插入A表:
执行代码:
insert into A表 select * from B表
执行后,3行数据:
101,102,103
91,92,93
81,82,83
被批插入A表

再举个例子,将B表的D1大于90的数据批插入到A表
执行代码:
insert into A表 select * from B表 where D1>90
执行后,2行数据:
101,102,103
91,92,93
被批插入了A表

2)触发器
当A表被批插入数据后,将所有插入的数据也批插入到C表
C表和A表结构相同
触发器代码如下:

create trigger insA
on A表
for insert
as
insert into C表 select * from inserted

解释下代码:
当数据被插入或者批插入到A表后,触发器触发工作,A表的新插入的数据被临时保存在inserted的触发器专用表里,我们将这些数据批插入到C表即是楼主的要求了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-07
我来写,记得给分和好评哈!
如果没异常,这两张表数据自然应该是一致的。下面是TRIGGER
Source Table : TB ; 表1 TB1; 表2 TB2,将数据批量写入TB1,然后通过TRIGGER同步至TB2, 同步过程为Store_Process_2
INSERT INTO TB1
SELECT * FROM TB
EXEC 服务器名.数据库名.dbo.Store_Process_2
如果同步过程很简单,只有一个导入,可以如下
EXEC('INSERT INTO TB2
SELECT * FROM TB1 ')追问

不理解啊,是怎么写入的啊,批量写入不重复吗,后面的和第一条不是一样的啊。触发器怎么写能不能清楚一点,大哥谢谢啦。

第2个回答  2011-06-07
触发器:
CREATE TRIGGER myTrigger
ON table1 FOR INSERT
AS
begin
insert into table2 select * from inserted
end

插入
insert into table1
select ?,?,?
union
select ?,?,?
……