社区
基础和管理
帖子详情
commit了事务,还能rollback吗?
alj317
2010-11-25 09:26:11
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
...全文
2496
9
打赏
收藏
commit了事务,还能rollback吗?
请教各位大侠 在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中? 如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
YY_MM_DD
2010-11-25
打赏
举报
回复
[Quote=引用 2 楼 alj317 的回复:]
引用 1 楼 xiaobn_cn 的回复:
commit后就不能rollback了
那先前的数据是否还是在缓存中呢?
如果修改前有个游标是要读取旧的值,它是否会在commit之后仍然是读取旧值?
[/Quote]
可以读取旧值,下面查询当前表60分钟前的数据,你就可以根据这个记录变相的回滚到你提交之前的记录。
select * from tableName as of timestamp systimestamp - interval '60' minute
冰山客
2010-11-25
打赏
举报
回复
[Quote=引用 5 楼 alj317 的回复:]
引用 3 楼 wkc168 的回复:
引用楼主 alj317 的回复:
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
知道个提交时间的话 用闪回
“闪回”是什么?
[/Quote]
“闪回”是Oracle 10g提供的新特性,举个例子,在9:00你对emp表做了修改,并commit,但是你想查询8:00的数据(也就是commit之前的数据),使用闪回查询(flashback)是可以查询到的,但是这些数据不是从表中查询到,而是从回滚段中得到
冰山客
2010-11-25
打赏
举报
回复
先前的数据是否在缓存中这个不一定,这要看Oracle执行的是快速清除还是延迟清除,快速清除是你提交后会立即将这些数据清理掉,延迟清除则是等下一次要用到这些块时,先前的数据将会被覆盖,这些数据即使没有被立即清除,你用游标也是无法读到的,但是旧的数据会保存在回滚段中,可以提供闪回(10g)
alj317
2010-11-25
打赏
举报
回复
[Quote=引用 3 楼 wkc168 的回复:]
引用楼主 alj317 的回复:
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
知道个提交时间的话 用闪回
[/Quote]
“闪回”是什么?
suhenhappy
2010-11-25
打赏
举报
回复
不能了吧...
心中的彩虹
2010-11-25
打赏
举报
回复
[Quote=引用楼主 alj317 的回复:]
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
[/Quote]
知道个提交时间的话 用闪回
alj317
2010-11-25
打赏
举报
回复
[Quote=引用 1 楼 xiaobn_cn 的回复:]
commit后就不能rollback了
[/Quote]
那先前的数据是否还是在缓存中呢?
如果修改前有个游标是要读取旧的值,它是否会在commit之后仍然是读取旧值?
xiaobn_cn
2010-11-25
打赏
举报
回复
commit后就不能rollback了
六、
事务
(
commit
、
rollback
)
事务
是数据库操作的逻辑单元,保证ACID特性,包括原子性、一致性、隔离性和持久性。
commit
用于提交
事务
,分为显式、隐式和自动提交三种形式。
rollback
则用于回滚
事务
,可指定回滚点。
MySQL
事务
的
rollback
和
commit
本文深入探讨MySQL中
事务
的概念,通过实例演示如何使用start transaction、
commit
和
rollback
进行
事务
控制,展示
事务
对数据持久化的影响。
管理
事务
处理——
rollback
、
commit
本文介绍了MySQL中的
事务
处理概念及其重要性。详细解释了如何通过starttransaction启动
事务
,使用
rollback
回退
事务
,使用
commit
提交
事务
变更,以及如何通过savepoint设置保留点实现
事务
的部分回退。此外还介绍了如何更改MySQL的默认提交行为。
事务
之
COMMIT
/
ROLLBACK
本文深入探讨了SQL
事务
管理的关键概念,包括
事务
的起始与终止方式,如
COMMIT
、
ROLLBACK
语句及DDL/DCL隐式提交等。详细解释了
事务
结束后下一条SQL语句如何开始新
事务
,以及
事务
中数据变更的状态管理,包括临时存放在缓冲池中的数据变更、通过SELECT查询发起
事务
的数据变更以及他人发起
事务
中未提交数据的限制。同时,文章阐述了
事务
在不同情况下的自动提交与回滚机制,以及数据在
COMMIT
、
ROLLBACK
操作前后的状态变化,包括数据变更的正式生效、数据恢复的可能性、锁定数据的释放与解锁。此外,还介绍了如何使用SAVEPOINT创建保存点,以及如何在
事务
中回退到特定保存点,以应对复杂操作的需求。
【MySQL】提高篇—
事务
管理:使用
COMMIT
和
ROLLBACK
管理
事务
在关系数据库中,
事务
管理对确保数据完整性和一致性至关重要。MySQL里,
COMMIT
和
ROLLBACK
是管理
事务
的重要命令。
COMMIT
用于提交
事务
,使操作结果永久保存;
ROLLBACK
用于回滚
事务
,撤销操作。文中通过银行转账示例,展示了二者的使用及
事务
管理的完整流程。
基础和管理
17,377
社区成员
95,113
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章