`

事务控制

阅读更多

1.事务(Transaction

组成单个逻辑工作单元的一系列操作被称为事务。

 

2.数据库事务组成

0~多条DML语句

一条DDLData Define Language)语句

一条DCLData Control Language)语句

 

3.事务控制

通过将一组相关操作组合为一个要么全部成功,要么全部失败的逻辑工作单元,以简化错误恢复、提高应用程序的可靠性。

 

4.事务必须满足的ACID属性:

原子性(Atomicity

一致性(Consistency

隔离性(Isolation

持久性(Durability

 

5.事务的开始和结束

事务开始于第一条可执行语句

事务结束:

遇到commitrollback语句

遇到DDLDCL语句

用户会话结束

系统崩溃

 

6.事务的提交和回滚

显式的提交和回滚操作是为了更好地保证数据的一致性。

下述情况事务会被自动提交

执行一个DDL语句

执行一个DCL语句

正常结束会话

 

会话异常终止/系统崩溃时事务会被自动回滚。

 

7.Sql Plus的自动提交

Sql Plus中执行SQL语句时可以设置是否自动提交,缺省设置为非自动提交。

查看设置:

show autocommit

       autocommit OFF

       autocommit IMMEDIATE

改变设置

set autocommit on

set autocommit off

 

8.提交/回滚数据状态

当前事务中数据状态的改变是可以恢复的。

当前事务中的DML操作结果只对当前用户(会话)可见,其它用户(会话)看不到当前事务中的数据状态的改变,直到当前事务结束。

当前事务中的DML语句所涉及到的行被锁定,其它用户(会话)不能对其进行修改操作。

 

9.事务提交后数据状态

数据的修改永久生效、不可再撤销。

数据以前的状态永久性丢失、无法恢复。

所有的用户(会话)都将看到操作后的结果。

记录锁被释放,其它用户可对这些进行修改操作。

事务中的保存点(savepoionts)被清除。

 

10.事务回滚后数据状态

数据的修改被撤销。

数据恢复到修改前的状态。

记录锁被释放。

 

11.保存点

通过保存点在当前的事务中创建标记,将来可回退到指定的标记处,实现事务的部分回滚。

例:

insert into dept values(55, ‘Adv’, ‘Beijing’);

insert into dept values(56, ‘Sec’, ‘Shanghai’);

savingpoint p1;

insert into dept valuw(57, ‘Acc’, ‘Tianjin’);

 

select * from dept;

 

rollback to p1;

select * from dept;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics