oracle中rollback用法,Oracle中SAVEPOINT和ROLLBACK用法

savepoint是事务内部允许部分rollback的标志符。因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点。如果遇到错误,就可以rollback到不同的点或直接回来事务最开始的点。

SAVEPOINT和ROLLBACK TO SAVEPOINT语法:

SAVEPOINT identifier

ROLLBACK [WORK] TO SAVEPOINT identifier

RELEASE SAVEPOINT identifier

例子:

create table t(id number,name varchar2(10));

//创建savepoint t1

insert into t values (1,'Tough1');

savepoint t1;

//创建savepoint t2

insert into t values (2,'Tough2');

savepoint t2;

//创建savepoint t3

update t set name='Tough' where id=2;

savepoint t3;

//回滚到update之前的状态,savepoint t3丢失

rollback to savepoint t2;

//回到第一个insert之前的状态,即空表。

rollback;

//如果执行COMMIT,当前事务的所有保存点被删除

commit;

delete from t where id=1;

savepoint t4;

//COMMIT后,当前事务的所有保存点被删除。rollback时出现错误。

//ORA-01086: 从未创建保存点 'T3'

rollback to savepoint t3;

Savepoints在应用程序中同样有用。如果一个过程包含几个函数,那可以在每个函数前创建一个savepoint。如果一个函数失败,返回数据到函数开始前的状态并在修改参数或执行一个恢复操作后重新运行函数就非常容易。

在回滚到一个savepoint后,Oracle释放由被回滚的语句持有的锁。其他等待之前被锁资源的事务可以进行了。其他要更新之前被锁行的事务也可以执行。

当一个事务回滚到一个savepoint,发生下列事件:

1. Oracle仅回滚savepoint之后的语句。

2. Oracle保留这一savepoint,但所有建立于此后的savepoints丢失。

3. Oracle释放在该savepoint后获得的所有表、行锁,但保留之前获得的所有锁。

4. 事务保持活动并可继续。

无论何时一个会话在等待事务,到savepoint的回滚不会释放行锁。为了确保事务如果无法获得锁也不会悬挂(hang),在执行UPDATE或DELETE前使用FOR UPDATE ... NOWAIT。(这里指回滚的savepoint之前获得的锁。该savepoint后获得的行锁会被释放,之后执行的语句也会被彻底回滚。)

如果执行COMMIT,当前事务的所有保存点被删除。rollback时出现错误-ORA-01086: 从未创建保存点 'T3'。

Oracle中rownum的基本用法

Oracle中rownum的基本用法 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且r ...

Oracle 中 CONTAINS 函数的用法

Oracle 中 CONTAINS 函数的用法 1. 查询住址在北京的学生 SELECT student_id,student_name FROM students WHERE CONTAINS( a ...

[转载]Oracle中TO_NUMBER()函数的用法

1 用法简介TO_NUMBER函数()是Oracle中常用的类型转换函数之一,主要是将字符串转换为数值型的格式,与TO_CHAR()函数的作用正好相反. To_number函数的格式如下: To_nu ...

Oracle中 to_date和to_char用法

to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...

Oracle中to_number()函数的用法

to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...

oracle 中 to_date 函数的用法

常犯错的使用方法. to_date('2019-08-12 22:05:','yyyy-MM-dd HH24:mm:ss') Oracle中会引起错误:"ORA 01810 格式代码出现两次 ...

oracle中分组排序函数用法 - 转

项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...

【Oracle】Oracle中dump函数的用法

一.函数标准格式: DUMP(expr[,return_fmt[,start_position][,length]]) 基本参数时4个,最少可以填的参数是0个.当完全没有参数时,直接返回null.另外 ...

Oracle中的时间函数用法(to_date、to_char) (总结)

一.24小时的形式显示出来要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005- ...

随机推荐

CSS魔法堂:"那不是bug,是你不懂我!" by inline-block

前言  每当来个需要既要水平排版又要设置固定高宽时,我就会想起display:inline-block,还有为了支持IE5.5/6/7的hack*display:inline;*zoom:1;.然后发 ...

tyvj1148 小船弯弯

描述 童年的我们,充满了新奇的想法.这天,小朋友们用彩虹画笔在云霞上绘制了世界上最美丽的图画.那描绘的是一条大河波浪宽,风吹稻花香两岸的情景.欣赏着自己的作品,小朋友们别提多开心了.这时,Q小朋友对C ...

MongoDB 3.0 新特性【转】

本文来自:http://www.open-open.com/lib/view/open1427078982824.html#_label3 更多信息见官网: http://docs.mongodb.o ...

block大小和分区最大容量单个文件最大容量的关系

block大小和单个文件最大容量的关系(文章来自鸟哥的Linux私房菜http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem_1.php#ps2) ...

access数据库连接问题

使用Visual Studio连接access数据库(数据库后缀.accdb)时连接不上(access数据库提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序)解决办 ...

server端推送消息机制

推送技术相关请参加WIKI: https://zh.wikipedia.org/wiki/%E6%8E%A8%E9%80%81%E6%8A%80%E6%9C%AF 场景: 监控系统:后台硬件温度.电压 ...

thinkphp通行证服务,验证登录,注销登录

会话数据的管理——Session

cookie的局限性: cookie只能存字符串类型.不能保存对象 只能存非中文 1个cookie的容量不超过4KB(如果要保存非字符串,超过4kb内容,只能使用session技术!!!) Sessi ...

SignalR2.0开发实例之——群发消息

一.前言 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相 ...

opewrt上传文件

设备上运行的openwrt,当tftp和ftp都无法使用时,可以使用命令scp在两台linux设备上copy文件. 当设备启动起来后,输入命令: scp hbg@192.168.2.32:/home/ ...

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
事务管理是指对系统的数据进行操作时,需要确保操作的原子性、一致性、隔离性和持久性。在学生信息管理系统,事务管理通常用于保证对学生信息、课程信息、成绩信息等数据的操作是正确可靠的。 Oracle数据库可以通过使用事务控制语句来实现事务管理,以下是一些常用的SQL语句示例: 1. 开启事务 在Oracle数据库,使用以下语句开启一个事务: ``` BEGIN -- 在这里编写需要执行的SQL语句 END; ``` 2. 提交事务 当需要提交事务时,可以使用以下语句: ``` COMMIT; ``` 在执行该语句后,系统将会将事务所有的操作结果保存到数据库。 3. 回滚事务 如果在执行事务过程发生了错误或者需要撤销之前的操作,可以使用以下语句回滚事务: ``` ROLLBACK; ``` 在执行该语句后,系统将会撤销事务所有的操作,并且数据将会恢复到之前的状态。 4. 设置保存点 在事务,可以设置一个保存点,当需要回滚到保存点时,可以使用以下语句: ``` SAVEPOINT savepoint_name; ``` 其,savepoint_name为保存点的名称。 5. 回滚到保存点 如果需要回滚到一个保存点,可以使用以下语句: ``` ROLLBACK TO SAVEPOINT savepoint_name; ``` 其,savepoint_name为需要回滚到的保存点的名称。 以上是一些常用的事务控制语句,在学生信息管理系统,可以根据具体的业务需求来选择适合的事务控制语句来确保数据的正确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值