在Java中是否有使用MySQL连接器的方法,我可以原子地执行读取修改写入,即,我想执行此操作:
// pseudocode
atomic
{
r = getRecord();
r = processRecord(r);
writeRecord(r);
}
我有点犹豫是否使用mysql LOCK命令锁定整个表,因为我无法可靠地解锁有争议的表。我想知道是否有更好的方法来做到这一点。任何帮助深表感谢。谢谢!
答案 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();