以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  新增多行保存和新增一行就保存时后台sql执行的区别?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=62660)

--  作者:HappyFt
--  发布时间:2015/1/5 22:57:00
--  新增多行保存和新增一行就保存时后台sql执行的区别?

在写代码时经常会遇到下面的情况

 

\'遍历新增完成一次性保存

For Each dr As DataRow In DataTables("订单").DataRows

     dim dr1 as datarow = tables("生产单").AddNew()

     dr1("")  = dr("")
      ....

Next

DataTables("生产单").Save

 

这种情况相当于后台sql数据库中一次insert就插入多行,即后台只执行一次insert操作

 

\'遍历一行就保存

For Each dr As DataRow In DataTables("订单").DataRows

     dim dr1 as datarow = tables("生产单").AddNew()

     dr1("")  = dr("")

     DataTables("生产单").Save

Next

这种情况相当于保存时后台sql数据库中每行都要执行一次insert

 

因为我用触发器关系到其按语句触发影响多行或一行的问题,特求证我的这种理解是否正确?

 

谢谢!

 

 



--  作者:有点甜
--  发布时间:2015/1/5 22:59:00
--  
 往数据库插入数据,一行,就是一个insert的,所以它们没有区别。
--  作者:HappyFt
--  发布时间:2015/1/5 23:19:00
--  

那不管遍历完再保存还是每遍历一行就保存都是每行插入时都会执行触发器中的代码了?


--  作者:有点甜
--  发布时间:2015/1/5 23:46:00
--  
 是的。
--  作者:HappyFt
--  发布时间:2015/1/5 23:53:00
--  

 

因为触发器中有介绍这样的语句只触发一次,所在才有此疑问


图片点击可在新窗口打开查看此主题相关图片如下:360截图20150105235331030.jpg
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2015/1/6 8:05:00
--  
不管你保存一行还是 多行,都会触发,保存多行触发多次.