获取受insert语句影响的详细行数

时间:2014-02-26 17:12:53

标签: sql database-partitioning rows-affected

我的表设置了一个名为'Month'的列。 我在表上运行一个sql insert语句,并获得受影响的行数。

有没有办法让每个“月”值的行受影响?

如果我的表是“月”列上的分区,那有帮助吗?

我的sql标准如下:

插入'TargetTable' (Column1,Column2,Months,Column4,....) SELECT column_names 来自SourceTable;

我正在使用.Net的SqlClient中的SqlCommand将sql传递给SQL服务器。

1 个答案:

答案 0 :(得分:1)

单个insert语句返回受影响的单行计数。您为'month'的每个值执行单独的插入,因此12个insert语句而不是1.这会产生一些性能影响。

或者,您可以加载要插入到临时表中的行并执行插入,然后报告事物,这些内容如下:

create table #work
( month                     int not null ,
  primary_key_of_real_table int not null ,
)
insert #work
select t.month , t.primary_key_column
from source_table t
where -- your filter criteria here

insert target_table
( ... column list ... )
select ... column list ...
from #work t
join source_table x on x.primary_key_column =t.primary_key_of_real_table

select m.month , cnt = sum(case when t.month is null then 1 else 0 end)
from ( select month = 1 union all
       select month = 2 union all
       ...
       select month = 12
     ) m
left join #work t on t.month = m.month
group by t.month
order by t.month