记录批量插入与触发器问题

近段时间数据库开发中有遇上一个批量数据插入并触发一个触发器的问题。程序刚开始时,一笔一笔插入是很正常的,后来改了程序,批量数据插入,此时触发器只触发第一笔记录,其余的记录均没有触发到触发器。

先来看看问题,在一个表中,如果有记录插入,将会触发发送邮件的功能。

为了能批量插入数据,Insus.NET创建一个Type:

这样用户只要传入一个DataTable即可。
最初始我写的插入存储过程是这样子:

这样写的存储过程,一笔一笔插入是没有问题,如果DataTable内含多笔记录时,它只会对第一笔记录触发博文最开始的触发器。解决这个问题,Insus.NET只好修改这个存储过程:

修改后就是循环DataTable的数据,分别单独插入表中,这样来触发触发器。

时间: 2024-10-06 14:51:27

记录批量插入与触发器问题的相关文章

SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)

临时表:Test /****** 对象: Table [dbo].[Test] 脚本日期: 05/10/2013 11:42:07 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Test]( [ID] [int] IDENTITY(1,1) NOT NULL, [UserID] [int] NOT NULL, [UserName] [nvarchar](50) COLLATE Chines

sql insert触发器 批量插入 游标

本人目前就职于一家B2C网站,今天在工作中碰到了一个问题,就是需要把有着几百万条数据的订单表table1数据复制到另一个提供给商户查看的表table2中,在插入到table2表时需要对新插入的数据进行分析分别录入到table3表和table4表中,同是table2表中数据保留.如果把查询出来的数据ctrl+c到table2中触发器会有效果,不过百十万的数据让我去粘的话,今天就可以歇着了! 当我们想要使用insert into table1 select * from table2时,触发器只会执

一条insert语句批量插入多条记录 AND 多条件游标更新 变CASE WHEN更新法提高速度

一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons (id_p, lastname , firstName, city ) values(204,'haha' , 'deng' , 'shenzhen'); (如上,仅插入了一条记录) 怎样一次insert插入多条记录呢? 使用示例: insert into persons (id_p, lastname , firstName, city ) values

Delphi中SQL批量插入记录

在进行数据库操作时, 我们经常会遇到批量向数据库中写入记录的情况. 在这里我提供3种操作方式: 1.  单条语句循环插入, 这是最笨的方法:for i := 0 to 100 do  ADOCommand1.Execute('IINSERT INTO .....')   //伪码, 只是说明意思 2.  多条语句批量插入, 将多条Insert语句拼成一条语句, 一次执行:for i := 0 to 100 do  sqlstr := sqlstr + 'INSERT INTO ...';ADOC

SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法

原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints using (SqlBulkCopy bulkCopy = new SqlBulkCopy(GlobalString.ConnectionString, SqlBulkCopy

批量发送短信,并批量插入短信记录

最近在项目中遇到了群发短信的需求. 需求点包括: 1.给符合条件的人群发优惠券短信 2.并对发送短信做记录,成功或者失败.(SqlServer) 短信接口: 亿美,api中有群发短信的接口,一组最大为200条. 思路: 1.发送的手机集合放进一个队列 2.依次读取队列,放到待发送列表,当满足200(短信组个数可配置在web.config中)条时,调用接口发送,直到队列数据发完 3.发送结果放进已发送短信结果集合 4.把发送结果批量插入数据库 代码: 群发helper /// <summary>

mysql妙用:批量插入记录,遇到重复记录则为自动更新

在更新大量数据时可能同时遇到两个问题: 如果每条更新执行一次sql性能很低,也容易造成阻塞: 批量更新时又有可能遇到主键重复的问题 使用 ON DUPLICATE KEY UPDATE 一条sql解决批量更新和主键重复问题(id为主键) INSERT INTO mytable(id,pid,ele,anim)  VALUES (?,?,?,?),(?,?,?,?),(?,?,?,?) ON DUPLICATE KEY UPDATE pid=VALUES(pid),ele=VALUES(ele)

MyBatis中批量插入数据对插入记录数的限制

<基于Mybatis框架的批量数据插入的性能问题的探讨>(作者:魏静敏 刘欢杰 来源:<计算机光盘软件与应用> 2013 年第 19 期)中提到批量插入的记录数不能超过1000条,实测可以插入超过1000条. 原文地址:https://www.cnblogs.com/huangzejun/p/8143043.html

Mysql慢查询开启和查看 ,存储过程批量插入1000万条记录进行慢查询测试

首先登陆进入Mysql命令行  执行sql      show variables like 'slow_query%';  结果为OFF 说明还未开启慢查询 执行sql     show variables like 'long_query_time';  可以看到具体的慢查询 ""时限" 我们先开启慢查询 执行sql set global slow_query_log='ON'; 这是再去查询一下(show variables like 'slow_query%';)发现