一、事务基本概念
事务是需要在同一个处理单元中执行的一系列更新西湖里的集合。通过事务可以对数据库中的数据更新处理的提交和取消进行管理。
指令:commit、rollback
事务的属性:ACID
原子性:事务是一个完整操作,要么都执行了要么都不执行。
一致性:事务执行的结果都是数据库从一个状态到另一个状态。
隔离性:事务的执行不干扰其他事务。
持久性:事务一旦提交完成数据库就不会丢失事务的结果。
oracle没有定义事务开始的语句。
二、commit
提交事务中包含的全部更新处理的结束指令,相当于文件处理中的覆盖保存,一旦提交就无法恢复到事务开始前的状态了。
三、rollback
取消事务中包含的全部更新处理的结束指令,相当于文件处理中的放弃保存,一旦回滚就会恢复到事务开始之前的状态。
四、事务何时开始
事务采用隐性的方式,起始于session的第一条DML语句(select不产生事务),一个session某个时刻只能有一个事务。
查看有没有事务:
五、事务何时结束
1、TCL语句被执行:commit或rollback
2、DDL被执行:自动提交事务
3、DCL被执行:自动提交事务
4、用户退出sqlplus:正常退出时提交,异常退出时回滚
5、服务器故障或系统崩溃:回滚事务
6、shutdown immediate:回滚事务
一个session插入数据,另一个shutdown immediate,在打开数据,连接到Scott用户查看,并没有保存插入的数据。
六、savepoint
在事务进行中设置一个保存点,回滚到该保存点,该保存点之前的事务还在,之后的会回滚。