基本概念:
事务是把对数据库的一系列操作[dml]看作一个整体,要么全部成功,要么全部失败,利用事务我们可以保证数据的完整性,事务具有原子性
事务和锁:
当执行事务操作时[dml],oracle会在被作用的表上加锁,防止其它用户改表表的结构,这里对我们用户来讲是非常重要的
提交事务:
当执行使用commit语句可以提交事务,
当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁,
当使用commit语句结束事务后,其它会话将可以查看到事务变化后的新数据
回退事务:
当执行rollback时,通过指定保存点可以回退到指定的点
事务的几个重要操作:
①设置保存点
savepoint 保存点名
②取消部分事务
rollback to 保存点名
③取消全部事务
rollback
事务的隔离级别
定义:事务的隔离级别用于指定事务的隔离程度
隔离级别 脏读 不可重复读 幻读
读已提交(Read committed) x V V
可串行化(Serializable ) x x x
只读(read only) x x x
脏读[dirty reads]:[Oracle中不会出现脏读]
当一个事务读取另一个事务尚[未提交]的修改时,产生脏读
不可重复读[non-repetable reads]:
同一查询在同一事务中多次进行,由于其它[提交事务]所做的[修改]或[删除],每次返回不同的结果集,此时发生非重复读
幻读[phantom read]:
同一查询在同一事务中多次进行,由于其它[提交事务]所做的[插入]操作,每次返回不同的结果集,此时发生幻读
注意事项:
①Oracle默认的隔离级别:read committed
②serializable就是使事务看起来像是一个接着一个的顺序的执行
③serializable和read only 的区别:
serializable:可执行DQl和DML
read only:只能执行DQl