关于设置事务回滚保存点的设置

本文通过伪代码详细介绍了Ingres数据库中如何实现事务的完全回滚与部分回滚。重点在于使用savepoint进行保存点设置,并根据不同的错误类型选择合适的回滚方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面用伪代码说明ingres数据库事务执行失败后全部回滚的实现过程 :

 

try
{

 savepoint(sp); //如果此处 保存点所依赖的transaction_handle事务句柄由connect()连接数据库时获取,则创建保存点成功,可以用rollback(sp)实现全部回滚;如果此时事务句柄为空,或者不是下面要执行事务的事务句柄,则此处savepoint(sp)创建保存点失败,要实现全部回滚必须用rollback(NULL);

  result=sql_query(A);//第一个查询语句A
if(result==failure)
  throw 1;
  savepoint(sp1); //第一个保存点sp1

 result= sql_query(B);
if(result==failure) throw 2;
  savepoint(sp2);

 result= sql_query(C);
if(result==failure) throw 3;

//提交事务
commit();

}
catch(int i)
{
  if(i==1)
{//全部回滚
 rollback(NULL); //参数为空时就可以全部回滚 ,这是因为如果自动提交事务关闭之后,在commit之前的所有query语句都在一个事务中
}
else if(i==2)
{
//部分回滚
   rollback(sp1); //回滚到sp1
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值