事务的特点:
事务是指作为单个逻辑工作单元执行的一组相关操作。这些操作要求全部完成或者全部不完成。 作用 : 使用事务是为了保证数据的安全有效 特性: (ACID) 原子性 一致性 隔离性 持久性
事物的隔离级别(四种)
-
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
事物的结束
-
成功:
-
正常执行完成的 DDL 语句:create、alter、drop
-
正常执行完 DCL 语句 GRANT、REVOKE
-
正常退出的 SQLPlus 或者 SQL Developer 等客户端
-
如果人工要使用隐式事务,SET AUTOCOMMIT ON (只针对一个连接)
-
手动提交 :使用 commit2.
-
失败
-
-
rollback ,手动回滚
-
非法退出 意外的断电
-
rollback 只能对未提交的数据撤销,已经 Commit 的数据是无法撤销的,因为 commit 之后已经持久化到数据库中。