所以我的客户端程序运行此代码以获取行数据并在之后将其删除。问题是在 SELECT 和 DELETE 之间有 60-130 毫秒的延迟,在这段时间内另一个客户端可能已经抓取了同一行。有什么办法可以同时 SELECT 和 DELETE 来阻止这种冲突的发生?
String filterQuery = "SELECT token_id FROM table WHERE expires <= ? LIMIT 1;";
PreparedStatement preparedStmt = conn.prepareStatement(filterQuery);
preparedStmt.setLong(1, System.currentTimeMillis());
long startTime = System.currentTimeMillis();
ResultSet result = preparedStmt.executeQuery();
String token_id = null;
while (result.next()) {
System.out.println(result.getString(1));
token_id = result.getString(1);
}
filterQuery = "DELETE FROM table WHERE token_id = ?;";
preparedStmt = conn.prepareStatement(filterQuery);
preparedStmt.setString(1, token_id);
preparedStmt.execute();
System.out.println(System.currentTimeMillis() - startTime+" milliseconds");
动漫人物
慕盖茨4494581
相关分类