0
我正在使用SQL表來維護我的應用程序狀態。在多線程環境中選擇後更新表
最初我是從我的表使用select查詢提取新的密鑰,然後更新存在狀態爲「拿起」
我現在正在一個多線程的環境。多線程環境中的問題是多次提取相同的密鑰。系統狀態變得不穩定。我曾嘗試使用同步但它不工作。我認爲有可能是一個SQL只有解決我的問題太多,但安裝java代碼
下面是我的代碼
sql ="select "+idField+",id from `tableName` where finish_time is NULL and status = 0 order by init_time limit 1";
Statement statement;
statement = connection.createStatement();
synchronized (this) {
ResultSet rs = statement.executeQuery(sql);
if (rs.next()) {
bId = rs.getString(1);
rowId = rs.getString(2);
}
sql1 = "UPDATE `tableName` SET `pick_up_time`=Now(),`status`=1 WHERE `id`="
+ rowId;
executeQuery(sql1);
這解決了這個問題,但是有沒有一個SQL特定的解決方案,我認爲這將有較少的開銷。例如:返回我更新的行的id。 – Count
@Count什麼意思*返回我更新的行的ID *? – wero
我對SQL不太滿意,但我的意思是「如果我可以選擇使用我的更新查詢更新的行的ID」 – Count