Java mysql读取修改写入

时间:2011-05-29 07:01:27

标签: java mysql

在Java中是否有使用MySQL连接器的方法,我可以原子地执行读取修改写入,即,我想执行此操作:

// pseudocode
atomic
{
   r = getRecord();
   r = processRecord(r);
   writeRecord(r);
}

我有点犹豫是否使用mysql LOCK命令锁定整个表,因为我无法可靠地解锁有争议的表。我想知道是否有更好的方法来做到这一点。任何帮助深表感谢。谢谢!

1 个答案:

答案 0 :(得分:0)

原则上,我假设你的意思是交易?如果将数据库连接上的自动提交状态设置为false,并在每个writeRecord(r)之后提交,那么您将只锁定记录r。

如果您想确保其他进程在getRecord()writeRecord(r)方法之间无法更改r,那么您可以通过locking in SHARED MODE

应用共享锁定

有些事情:

   // pseudocode
   connection = getConnection();
   connection.setautoCommit(false);
   r = getRecord(connection);
   r = processRecord(r);
   writeRecord(r,connection);
   connection.commit();