【发布时间】:2011-05-17 19:13:16
【问题描述】:
我在使用 MySQL 的 SELECT .. FOR UPDATE 时遇到问题,这是我要运行的查询:
SQL = "SELECT * " +
"FROM " + TableName + " " +
"WHERE out_status IN ("+outSStatus+") AND queued <= NOW() " +
"ORDER BY out_status, id_queue ASC "+ limitSql+
"FOR UPDATE";
在此之后,线程将执行 UPDATE 并将 out_status 更改为 99,然后它应该解锁该行。
我正在运行一个多线程 java 应用程序,因此 3 个线程正在运行此 SQL 语句,但是当线程 1 运行它时,它不会锁定(隐藏)线程 2 和 3 的结果。因此线程 2 和 3得到相同的结果。
每个线程都在自己的mysql连接上。
有人可以帮我解决这个问题吗?或者也许有更好的解决方案?
非常感谢。
【问题讨论】:
标签: java sql mysql select jdbc