数据库 为何使用 回滚

数据库 为何使用 回滚,第1张

简单的来说,我给你举两个例子:

1、对数据库做了ddl的 *** 作,但是没有进行提交 *** 作,此时就会提示受影响行数,如果最后没有进行提交 *** 作,数据就会回滚。

2、对数据进行 *** 作时,如果数据报错,如批量插入数据,其中有一条无法插入,那么此次的 *** 作就会被视为无效,数据库就会回滚,以保证数据的完整性。

3、在程序开发时,是以事务为原子性 *** 作的,此时可能因为一个业务 *** 作会对数据库的多个表进行增删改,如果中间出现问题,那么对已 *** 作部分的数据怎么办呢?

数据库的回滚就可以解决。

在BLL层处理:(多层系统)

1-首先要启动Distributed Transaction Coordinator(DTC)服务;

2-添加引用System.Transactions

3-再using System.Transactions

4-using (TransactionScope scope = new TransactionScope())

{

conn.Open()

comm.CommandText = sql1

result1 = comm.ExecuteNonQuery()

comm.CommandText = sql2

result2 = comm.ExecuteNonQuery()

scope.Complete()

}

//只有{}内的方法要么全部执行成功,要么里面所有的 *** 作会回滚

注意:TransactionScope 这个类最大的用处并不是在一个数据库进行事务管理,如果是一个数据库,可考虑使用存储过程进行事务处理,效率最高;

如果要跨数据库 *** 作,则要使用此类。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9927693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存