《Oracle从入门到精通》读书笔记第四章 SQL语言基础之二

4.7 事务处理
4.7.1 事务概述
事务的4种属性:acid
(1)原子性(atomic):事务是一个整体的工作单元,要么全部执行,要么全部取消。
(2)一致性(consistency):所有的数据都保持一致状态。
(3)隔离性(isolated):事务所在的修改必须与其他事务所在的修改隔离。
(4)持久性(durability):事务提交后,修改就会永久保存下来。
4.7.2 操作事务
隐式自动开始
结束标志:
(1)执行commit语句提交事务
(2)执行rollback语句撤销事务
(3)执行一条数据定义语句,如create,drop或alter语句。执行成功,自动执行commit语句,否则指定执行rollback语句
(4)执行一个数据控制命令,如grant,revoke等,自动执行commit命令
(5)正常断开数据库的连接,正常退出sqlplus环境

1、提交事务(commit语句)
提交事务时,oracle系统内部会按照如下顺序进行处理:
(1)在回滚段内记录当前事务已提交,并且声称一个唯一的系统编号(SCN),以唯一标识这个事务。
(2)启动后台的日志写入进程(LGWR),将SGA区的重做日志缓冲区中的数据和当前事务的SCN写入重做日志文件中。
(3)oracle服务器开始释放事务处理所使用的系统资源。
(4)显示通知,告诉用户事务已经成功提交。

SQL> select * from jobs_temp;

no rows selected

SQL> insert into jobs_temp values('DESIGN','设计人员',3000,5000);

1 row created.

SQL> commit
  2  ;

Commit complete.

2、回滚事务
回滚事务是指撤销对数据库进行的全部操作,oracle利用回滚段来存储修改前的数据,通过重做日志来记录对数据所做的修改。如果要回滚整个事务,oracle系统内部将会执行如下操作过程:
(1)使用回滚段中的数据撤销对数据库所做的修改
(2)oracle后台服务进程释放掉事务所使用的系统资源
(3)显示通知,告诉用户事务回滚成功
SQL> truncate table jobs_temp;

Table truncated.

SQL> col job_id for a20;
SQL> col job_title for a30;
SQL> insert into jobs_temp values('OFFICE','办公文员',3000,5000);

1 row created.

SQL> savepoint sp;

Savepoint created.

SQL> insert into jobs_temp values('FINANCE','财务人员',4000,8000);

1 row created.

SQL> select * from jobs_temp;

JOB_ID               JOB_TITLE                      MIN_SALARY MAX_SALARY
-------------------- ------------------------------ ---------- ----------
OFFICE               办公文员                             3000       5000
FINANCE              财务人员                             4000       8000

SQL> rollback to savepoint sp;

Rollback complete.

SQL> select * from jobs_temp;

JOB_ID               JOB_TITLE                      MIN_SALARY MAX_SALARY
-------------------- ------------------------------ ---------- ----------
OFFICE               办公文员                             3000       5000

你可能感兴趣的:(oracle,sql,数据库)