首页 新闻 搜索 专区 学院

数据库事务的问题……

0
悬赏园豆:5 [已解决问题] 解决于 2012-08-22 09:02

数据库事务一次性可以回滚多少条数据????

 

比如一次性提交了50万条数据,有一个出错,这50万的数据统统都要回滚么???

田麦成的主页 田麦成 | 小虾三级 | 园豆:1984
提问于:2012-08-21 18:05
< >
分享
最佳答案
0

sql serve可以使用分段事务,更新50万数据改为分批更新的话,就可以了。

当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。OFF 是默认设置。

 

SET XACT_ABORT  OFF  

begin transaction t1                       --开始一个事务t1

update a set x=1 where x is null     --更新为值1

save transaction t2                         --保存事务点t2

update b set y=2 where y is null      --更新为值2

if @@error<>0                                --判断有无错误

rollback transaction t2                     --如果有,回滚到事务点t2

commit transaction t1                       --提交事务t1

 

楼主可以看下SQL 分段事务。

收获园豆:5
acepro | 小虾三级 |园豆:1218 | 2012-08-21 19:22
其他回答(3)
0

这个跟你的提交方式和数据库有关系,mssql 批量保存只能回滚那一批的,比如一批提交100条。

oracle 批量保存的就不能回滚了。

拼sql的就只能回滚拼的那些记录了,大批量一般也不会用拼sql的方式。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-21 18:26
0

楼主你太狠了。

chenping2008 | 园豆:9836 (大侠五级) | 2012-08-21 19:47
0

你一次性更新50W条。。不卡么

you know what it is | 园豆:241 (菜鸟二级) | 2012-08-22 08:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册