批量更新数据

update  BuyPruduct  set  AmountInvoice  =  AmountInvoice  -  b.Amount  from  
(
        
select  BuyProtocolProductID,Amount  from  BuyInvoiceProduct 
         
where  BuyInvoiceID  =   @ImportValue

as  b 
where  BuyPruduct.ID  =  b.BuyProtocolProductID

 其中BuyProduct 的ID是主键

BuyInvoiceProduct表中的 BuyProtocolProductID 字段和BuyProduct中 的ID是相同的

这种情况是在删除 BuyInvoice 表中的记录是

把BuyInvoiceProduct表中的记录全都的删除

同时还要修改BuyPruduct表中的记录,

由于不太熟在sql数据里写存储过程

以后这种实现都在每删除一条BuyInvoiceProduct记录

同时去更新一个BuyPruduct表中对应记录AmountInvoice的值

后来想了想了如果有一百记录的话

那致少得循环的一百的打开数据,连接数据.

这样事必对数据产能行大的冲击.

后来在网上看到了有关一些批量更新的法子

于是就更用了上面那种

如果用这个的话,打开数据连接最多三次

第一次是删除BuyInvoice里的记录时打开一次.

第二次就是更新BuyPruduct表时打又打开一次

最后一新就是删除BuyInvoiceProduct中的记录.

不管有多少条记录,也最多只打开三个,双以前写的那种,可以说好多啦.

这样不尽减少了网络的数据流量同时也对减轻了数据的负担.

当然最好的法子就是写一个存储过程(可惜像样的还不会写.)



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1586586 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值