批量插入数据 如何执行触发器 请高手帮忙???

Reasoncool 2006-09-27 06:04:35
向目的表中一次性插入大量数据,可是触发器只对一行数据有效。

要对每一行插入数据都进行触发 请问如何实现。

除了 用游标
...全文
306 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wshuangminlg 2006-09-28
  • 打赏
  • 举报
回复
帮LZ顶
myminimouse 2006-09-28
  • 打赏
  • 举报
回复
帮顶~
Reasoncool 2006-09-27
  • 打赏
  • 举报
回复
sql server 不支持行级触发器 是吗
Reasoncool 2006-09-27
  • 打赏
  • 举报
回复
目前是一次插入几万条记录 要提取每一条记录的数据 进行处理执行其他存储过程

谢谢 sp1234(能忍耐,该慢则慢,一步步来办。) 的回答

我还是有点不太明白

“例如一次插入100万条记录,应该首先删除所有索引、停止所有触发器,待插入记录完毕再重建。”


  • 打赏
  • 举报
回复
create trigger [会计分录] --> create trigger kadfasdfakfskak on [会计分录]
  • 打赏
  • 举报
回复
不过,如果是真正的“批量插入”,例如一次插入100万条记录,应该首先删除所有索引、停止所有触发器,待插入记录完毕再重建。
  • 打赏
  • 举报
回复
你使用的是什么数据库?如果是SQL Server,它不是针对单条记录触发的,而是“本来就是”针对每一个批命令触发的。

因此SQL Server触发器都应该针对数据集进行设计,如果想当然地以为是单条记录,其实是错误的。例如:

create trigger [会计分录] after insert as
declare @d varchar
select @d=[会计账簿] from inserted
update [总分类账] set [分录数]=[分录数]+1 where [账簿]=@d
go

上面这个是错误的。如果测试不慎重,当你实际应用中插入两条以上记录的时候,这个触发器就是系统中的一粒老鼠屎。

真正应该写:
create trigger [会计分录] after insert as
update x set [分录数]=x.[分录数]+i.n from [总分类账] as x
inner join (select [会计账簿],count(*) as n from inserted
group by [会计账簿]) as i on x.[账簿]=i.[会计账簿]
go
Reasoncool 2006-09-27
  • 打赏
  • 举报
回复
是批量插入 执行一次insert 插入数条记录
terryxin 2006-09-27
  • 打赏
  • 举报
回复
应该是每次有新数据都会触发的,你检查下触发器
ralpha08 2006-09-27
  • 打赏
  • 举报
回复
触发器写的有问题,应该是每一次插入都会调用触发器的

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧