选择...进行更新&以嵌套方式提交

时间:2015-07-23 18:32:11

标签: mysql database innodb mysql-connector

我正在使用MySQL Connector / C ++,这是我的伪代码。我有两个函数,这两个函数调用一个公共函数:

CommonFunction()
{
   selects some rows for update
  // ... Do some transactions here ...
   commit transaction 
}

Function1()
{
  CommonFunction();
  // ... Do some activities here ...
}

Function2()
{
  selects some rows for update
  // ... Do some transactions here ...
  CommonFunction();
  // ... Do some other transactions here ...
  commit transaction 
}

问题:

如果我调用Function1,它会调用CommonFunction来锁定行以进行更新,然后执行一些事务。工作良好。

但是当我调用Function2时,它会执行一些事务,并在执行其作业调用后调用CommonFunction。但是,此提交还会导致在Function2中释放选定要进行更新的行,然后再执行“其他一些事务”。

有人可以告诉我怎么解决这个问题?请注意,出于演示目的,我已使用最少的功能对其进行了解释。实际代码更复杂,我不想打扰模块化(例如,删除commit中的CommonFunction会影响整个代码)。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

<强>被修改

要获得类似于嵌套事务的内容,请使用SAVEPOINT nameRELEASE SAVEPOINT name。对于&#34;回滚&#34;:ROLLBACK WORK TO SAVEPOINT name

参考: http://dev.mysql.com/doc/refman/5.6/en/savepoint.html