近段时间数据库开发中有遇上一个批量数据插入并触发一个触发器的问题。程序刚开始时,一笔一笔插入是很正常的,后来改了程序,批量数据插入,此时触发器只触发第一笔记录,其余的记录均没有触发到触发器。
先来看看问题,在一个表中,如果有记录插入,将会触发发送邮件的功能。
![](https://images2015.cnblogs.com/blog/28036/201510/28036-20151010133244565-1645261103.png)
为了能批量插入数据,Insus.NET创建一个Type:
![](https://images2015.cnblogs.com/blog/28036/201510/28036-20151010140131112-1199279266.png)
这样用户只要传入一个DataTable即可。
最初始我写的插入存储过程是这样子:
![](https://images2015.cnblogs.com/blog/28036/201510/28036-20151010143147393-1585197734.png)
这样写的存储过程,一笔一笔插入是没有问题,如果DataTable内含多笔记录时,它只会对第一笔记录触发博文最开始的触发器。解决这个问题,Insus.NET只好修改这个存储过程:
![](https://images2015.cnblogs.com/blog/28036/201510/28036-20151010143539518-340989048.png)
修改后就是循环DataTable的数据,分别单独插入表中,这样来触发触发器。