Oracle 事务小结

什么是事务

保证数据库从一种状态,改变为另一种状态(一致)。要么全部修改都保存,要么全部修改都不保存(原子)

为什么要用事务

例如更新两个日志文件,第一个文件更新完后,第二个文件更新到一半。文件系统只能恢复第二个文件的快照,而不能把第一个文件也恢复到之前,或者继续把第二个文件更新完成。即不能保持两个文件状态一致,要么全部成功,要么全部失败。

事务体现了ACID特性

原子性(Atomicity):一个事务中的多条Sql语句,要么全部发生,要么全部回滚(我的理解可能比较片面)
一致性(Consistency):在undo段中存放事务所做的修改的旧值,这样某事务进行过程中,可以对事务外查询(可以理解为其它实例的查询)提供旧值的查询,即读一致性。事务提交后,事务外查询和事务内查询结果一致。
隔离性(Isolation):一个事务在提交前,事务外查寻的结果为旧查询结果。即事务未提交,对其它事务无影响。
持久性(Durability):事务一旦提交,结果是永久性的

事务的开始和结束

一个dml语句会隐式的开启一个事物。如增改删。
commit,rollback 结束事务。(rollback to savepoint 不会结束事务)

存储过程 如果有异常捕获 则不会发生回滚(不会“触发出错就回滚”机制)
DML 语句出错 会回滚到 该条dml语句之前的 savepoint(Oracle中默认在每个数据库命令外加了一个savepoint) 所以都不会结束事务

发布了21 篇原创文章 · 获赞 6 · 访问量 9327

猜你喜欢

转载自blog.csdn.net/qq1032350287/article/details/86737166