首页 > 代码库 > 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之事务