savepoint的使用

复制代码
create table AA
(
  id   NUMBER,
  name VARCHAR2(3)
);
insert into aa (id,name) values(1,'g1');

insert into aa (id,name) values(2,'g2');

select t.*, t.rowid from AA t;


commit;
--------------
insert into aa (id,name) values(3,'g3');

rollback;

insert into aa (id,name) values (4, 'g4');
insert into aa (id,name) values (5, 'g5');
savepoint A;
update aa set name='g9' where id=5;

update aa set name='g10' where id=5;
update aa set name='g11' where id=6;

savepoint B;

insert into aa (id,name) values (6, 'g6');
 rollback to B;
 rollback to A;
 commit;  --或者 rollback;
复制代码

系统中有个队列,用savepoint对整个transaction的不同阶段进行标记,标记不会导致已有的命令执行。

这个过程中,如果想回滚,告知回滚到什么地方即可。

如果一条DML语句会造成多少影响,则使用sql$rowcount来看会有多少影响

https://www.cnblogs.com/langtianya/p/5067019.html

posted @   一年变大牛  阅读(399)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2018-04-01 host文件介绍
点击右上角即可分享
微信分享提示