Oracle SQL 学习笔记8- 数据库事务
2020-02-05 本文已影响0人
赵阳_c149
什么是数据库事务
一组SQL操作集合,要么全部完成,要么全部废弃。一个事务可以包含下列语句:
- 对数据做出一致性修改的DML语句
- 一个DDL语句
- 一个DCL语句
事务以第一个可执行的SQL语句开始,以下列情况结束:
- 执行COMMIT或者ROLLBACK语句
- 执行DDL或者DCL语句
- 用户退出
- 系统崩溃
COMMIT和ROLLBACK语句的优点
- 保证数据的一致性
- 在数据永久改变之前,检查数据的改变
- 对逻辑相关操作进行分组
控制事务
trans.JPG隐式事务处理
在下列情况下,会发生一个自动提交:
- 处理DDL语句
- 处理DCL语句
- 从SQL * PLUS 中退出,而没有明确指定COMMIT或者ROLLBACK
当SQL * PLUS中断(断网)或者系统失败(崩溃,断电)时自动进行回滚。
在COMMIT 或 ROLLBACK 之前的数据状态
之前的状态是可以被恢复的。当前用户可以用SELECT语句来查看DML操作后的结果,而其他用户是看不到当前用户使用DML语句进行数据操作的结果的。而且,由于产生改变的数据被加了锁,其他用户不能改变这些行。
在COMMIT之后的数据状态
COMMIT之后,数据的改变将被永久的反应到数据库中去,而事务前面的数据状态将被永久的丢弃。所有的用户都可以查看结果。而且,加在产生改变的行上的数据被解锁,也就是说这些行对于其他用户是可用的。所有的保存点被释放。
锁定
在并发事务之间,Oracle 锁阻止可能产生的破坏性相互影响。这种锁不需要用户进行干预,自动使用,在事务期间使用,事务结束后释放。注意DML的锁是行锁。
锁有两种基本的方式:
- 排它
- 共享
tip
DELETE/UPDATE之前要先SELECT,然后将SELECT改成DELETE/UPDATE。