首页 > 代码库 > Oracle之事务

Oracle之事务

一,oracle的事务:

是指对数据操作的一系列动作的统称.即:事务的任务便是使数据库从一种状态变换成为另一种状态,这不同于文件系统,它是数据库所特用的。

事务有四大特性(ACID):

1,原子性(atomicity),

      事务中的所有任务要么全部成功,要么全部失败.不能存在部分成功,部分失败.比如银行转账,A向B转200元,A账户余额少200元,B账户余额多200元.不能出现A账户少200元而B账户余额没多出200元.

2,一致性(consistency),

  事务将数据库从一种一致状态转变为下一个一致状态.

比如转账,A账户和B账户都成功的更新了余额,则这个转账操作才是成功完成的,如果任何一个操作发生而另一个没有发生,就会导致数据出现不一致,而使用事务可以确保数据的一致性.

   

3,隔离性(isolation),

  一个事务的影响在该事务提交到数据库前对其他事务都是不可见得.比如转账,当将A账户的余额减少时,由于还没有更新B账户,事务没提交,其他用户在查看A账户时,不会看到A账户余额已经减少,只有在转账成功完成时,才会看到效果,这使得事务好像是串行执行的一样

4,持久性(durability),

  事务一旦提交,其所做的更改就是永久性的.

 

数据库通过其恢复机制,确保在事务中所作的更改不会丢失.

事务结束的几种情况:

1,遇到commit,rollback语句时,提交或者回滚事务.

2,当用户退出Oracle工具时,

3,当机器失效或者是系统崩溃时.

二,事务的管理

 

commit,提交自上一次commit或者是rollback一来,所有当前的改变,并且释放所有的锁

rollback,回滚自上一次commit或者是rollback一来,所有当前的改变,并且释放所有的锁

rollback to savepoint ,回滚改变到一个已经保存的保存点,并且释放所有该范围内的锁

savepoint,建立一个保存点,允许完成部分回滚操作

set transaction,允许开始一个只读或者读写回话,建立一个隔离级别,或者将当前的事务赋给一个特定的回滚段

lock table,允许使用特定的模式锁定整个数据库表,这将覆盖默认行级别的锁定,

 

使用commit提交事务:

 

Oracle之事务