事务 (Oracle) --9

事务

事务 (Oracle) --9

含义:

​ 单个逻辑单位执行的一组操作,以事务为单位,在一个事务声明周期之间额的一组 操作要么都成功,要么都失败

事务的作用:使用事务是为了保证数据的安全有效

事务的作用:

​ 使用事务是为了保证数据的安全有效

特点:

  1. 原子性(Atomic):事务中所有数据的修改,要么全部执行,要么全部不执行。

  2. 一致性(Consistence):事务完成时,要使所有所 有的数据都保持一致的状态,换言之:通过事务进行的所有数据修改,必须在所有相关的表中得到反映。

  3. 隔离性(Isolation):事务应该在另一个事务对数据的修改前或者修改后进行访问。

  4. 持久性(Durability):保证事务对数据库的修改是持久有效的,即使发生系统故障,也不应该丢失。

隔离级别:

事务 (Oracle) --9

​ Oracle 默认的隔离级别是 read committed。

​ Oracle 支持上述四种隔离级别中的两种:read committed 和 serializable。

Oralce 中还定义 Read only 和 Read write 隔离级别:

​Read only:事务中不能有任何修改数据库中数据的操作语句,是 Serializable 的一个子集。

Read write:它是默认设置,该选项表示在事务中可以有访问语句、修改语句,但不经常使用


​ 丢失更新:两个事务同时存储, 一个存储 100 , 一个 存储 200,最终可能至存储了 200 或者 100,那另一个的 更新就没成功,即结果不为预想的 300

​ 脏读:事务 T1 更新了一行数据,还没有提交所做的修 改,T2 读取更新后的数据,T1回滚,T2 读取的数据无 效,这种数据称为脏读数据。

​ 不可重复读:事务 T1 读取一行数据,T2 修改了 T1 刚刚 读取的记录,T1 再次查询,发现与第一次读取的记录不 相同,称为不可重复读。

​ 幻读:事务 T1 读取一条带 WHERE 条件的语句,返回结 果集,T2 插入一条新纪录,恰好也是 T1 的 WHERE 条 件,T1 再次查询,结果集中又看到 T2 的记录,新纪录就叫做幻读。

事务的开启和结束

开启:

​ 开启于 DML 之 insert delete update

结束:

提交成功:
  1. 手动提交 :使用 commit
  2. 正常执行完成的 DDL 语句:create、alter、drop
  3. 正常执行完 DCL 语句 GRANT、REVOKE
  4. 正常退出的 SQLPlus 或者 SQL Developer 等客户端
  5. JDBC的 insert delete update是默认提交事务
  6. 如果人工要使用隐式事务,SET AUTOCOMMIT ON (只针对一个连接)
提交失败:
  1. 手动回滚:rollback (rollback 只能对未提交的数据撤销,已经 Commit 的数据是无法撤销的,因为 commit 之后已经持久化到数据库中。)
  2. 非法退出 意外的断电