Oracle事务的基本概念与例子.docx
Oracle 事务的基本概念与例子Oracle 事务的基本概念与例子 事务数据库系统工作的一个逻辑单元,它由一个或多个SQL语句组成。对于数据库而言,事务是不可分割的工作单元,一个事务中的所有SQL语句要么全部执行,要么全部不执行。也就是说,当事务被提交后,该事务的操作才直正被保存到数据库中。如果某个事务被回退了,那么该事务的所有操作都被取消。事务的回退和提交可以由用户显式执行,也可以隐含地执行。 一般情况下,用户或应用程序需要显式地执行COMMIT语句提交事务,但是用户也可以不使用COMMIT语句而隐式地提交事务。例如,在事务的结尾处使用DDL语句时,Oracle默认为提交当前的事务,并且开始一个新的事务。只有当事务被提交后,其他用户才能够看到对数据库的修改结果。下面将启动两个SQL*Plus会话来演示Oracle的事务处理特性: 启动SQL*Plus,使用SCOTT身份连接到数据库,并且向EMP表添加一些数据,如下所示: SQL> insert into emp(empno,ename,job,sal) 2 values(8000,'刘丽','MANAGER','2300'); 已创建 1 行。 在该会话中执行如下的查询时,用户可以在看到先前插入的数据: SQL> select empno,ename,job,sal 2 from emp 3 where empno=8000; EMPNO ENAME JOB SAL - - - - 8000 刘丽 MANAGER 2300 现在打开另一个SQL*Plus,并且保持第一个SQL*Plus不被关闭。在第二个SQL*Plus中执行相同SELECT语句,以查看先前插入的数据: SQL> select empno,ename,job,sal 2 from emp 3 where empno=8000; 未选定行 在这里可以发现,由于第一个会话没有提交事务,所以在第二个会话中新看不到第一个会添加数据。 在第一个SQL*Plus中使用COMMIT语句提交事务。 SQL> commit; 提交完成。 现在,如果用户再次在第二个SQL*Plus中运行上面的SELECT语句,就会看到在第一个SQL*Plus中所提交的数据。