oracle课堂收录-过程中的事务处理
2015-10-19 20:30
471 查看
用户可以使用COMMIT语句将事务中的所有操作‘保存’到数据库中。
如果用户需要撤销所有的操作,则可以使用ROLLBACK语句回退事物中未提交的操作。
举个栗子
(1)以用户scott身份连接到数据库,并建立两个表
(3)在匿名程序块中调用INSERT_INTO_LOG过程
SQL> begin
2 insert_into_log('添加数据到TEMP表之前调用');
3 insert into temp
4 values(1);
5 insert_into_log('添加数据到TEMP表之后调用');
6 rollback;
7 end;
8 /
PL/SQL 过程已成功完成。
(4)查看表中的数据
从结果中可以看出,在temp表中并没有数据,说明rollback已经撤销了insert语句,而log_table中包含了两条记录,说明过程中的子事务已经被提交,即过程中的子事务和父事务可以互相互不干涉的进行。
如果用户需要撤销所有的操作,则可以使用ROLLBACK语句回退事物中未提交的操作。
举个栗子
(1)以用户scott身份连接到数据库,并建立两个表
C:\Documents and Settings\Administrator>sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 10月 19 20:25:42 2015 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> connect scott/******* 已连接。 SQL> create table temp(n number); 表已创建。 SQL> create table log_table( 2 username varchar2(20), 3 password varchar2(4000) 4 ); 表已创建。(2)建立一个存储过程INSERT_INTO_LOG,用于向表LOG_TABLE添加记录。
SQL> create or replace procedure insert_into_log(msg_param varchar2) is 2 pragma autonomous_transaction; 3 begin 4 insert into log_table(username,password) 5 values(user,msg_param); 6 commit; 7 end insert_into_log; 8 /
(3)在匿名程序块中调用INSERT_INTO_LOG过程
SQL> begin
2 insert_into_log('添加数据到TEMP表之前调用');
3 insert into temp
4 values(1);
5 insert_into_log('添加数据到TEMP表之后调用');
6 rollback;
7 end;
8 /
PL/SQL 过程已成功完成。
(4)查看表中的数据
SQL> select * from log_table; USERNAME -------------------- PASSWORD ----------------------------------------- SCOTT 添加数据到TEMP表之前调用 SCOTT 添加数据到TEMP表之后调用
从结果中可以看出,在temp表中并没有数据,说明rollback已经撤销了insert语句,而log_table中包含了两条记录,说明过程中的子事务已经被提交,即过程中的子事务和父事务可以互相互不干涉的进行。
相关文章推荐
- oracle课堂收录-默认值
- oracle课堂收录-参数
- Navicat_Premium连接Oracle_10g
- Oracle 数据泵导数据(expdp,impdp)
- Oracle 11G Active DataGuard(ADG)搭建配置过程
- Oracle 表空间及用户创建 sql 语句
- ORACLE 区间分区(Interval Partitioning)
- Centos 6: nginx+php+oracle安装配置
- Oracle 获取当前日期及日期格式
- oracle 子查询的解决方法~
- 【PLSQL】安装PLSQL访问64位Oracle
- Oracle 时间相减得出毫秒、秒、分、时、天,,【转】
- ORACLE配置tnsnames.ora文件实例
- ORACLE临时表总结
- Oracle常用的数据类型
- oracle笔记第8周
- window下定时导出导入数据(单表SCV<-->Oracle)
- Oracle TO_DATE 日期格式
- oracle 11g sqlplus下无法切换中文输入法
- oracle 导出导入