交易问题

问题描述:

我使用Java和MySql作为数据库。交易问题

我正在运行多个应用程序实例。我从数据库中选择一条记录,同时在提取后,我将其状态更新为“正在处理”,以便其他实例无法访问该记录。

但是,实例运行速度如此之快,以至于当一个实例访问一条记录时,另一个实例在第一个实例更新为“正在处理”之前也访问同一条记录。我应该怎么做,以便在其他实例可以访问之前进行更新?我在我的代码中使用了conn.setTransactionIsolation(conn.TRANSACTION_READ_COMMITTED),但这也无济于事。

在此先感谢。

嗯,我认为你的问题的解决方案是同步块。有两种方法可以做到这一点。无论是写同步块或将更新数据库代码放入一个同步的方法。所以如果一个线程正在进行更改,那么其他线程将不会访问它。 欲了解更多参考click here

+0

当实际上涉及多个JVM时,这根本无济于事。我认为这是这个问题。 – 2011-02-10 06:53:23

您需要一个select for update类型的语句。

http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html