java - 2条更新语句几乎同时执行

标签 java mysql database

使用 Spring Boot Data,2 个更新语句按顺序执行,但几乎同时执行(可能 1 或 2 纳秒),如下所示:

Update StatusTable SET status = 'IN-PROGRESS' AND updatedTime = NOW();

Update StatusTable SET status = 'DONE' AND updatedTime = NOW();

2 个更新语句返回具有相同值的updatedTime。

在用户界面中,我有一个屏幕,其中根据更新时间按时间顺序显示状态表。由于updatedTime相同,显示顺序错误:

1)准备就绪

2) 进行中

而不是

1) 进行中

2)准备就绪

注意:Thread.sleep() 或延迟时间在我的情况下不是一个好的选择

最佳答案

我打赌你使用的是秒精度的时间戳,对吗?开始使用更精细的精度,例如毫或微秒精度。如果这没有帮助(因为您使用的是速度极快的计算机,并且两次调用 NOW() 给出了相同的纳秒读数),您将不得不寻找另一个解决方案,并停止依赖时间戳。

作为一种解决方法,我会切换或(至少添加)通过自动增量 ID 进行排序。如果您的 SQL 遵循“时间顺序”,那么 IDS 将是唯一的并且顺序相同。

如果您有自动增量 ID,我会尝试 ORDER BY UpdatedTime ASC, id ASC 这将导致在时间戳相等时按 id 排序,但作为主机,我认为仅按 排序id 会给你想要的结果。

关于java - 2条更新语句几乎同时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46048781/

相关文章:

mysql - 在 SQL 上索引奇怪的通配符

java - SQLite 与列表

java - Spring-MVC web.xml 文件不使用 ContextLoaderListener

Java 注释 - 如何在处理器中获取属性和类

java - MenuItem Focused Label JavaFX 上的 CSS 样式

php - 使用 nl2br 函数自动编号

php - 使用php mysql为div分配不同的类名

sql-server - 我可以删除基于多列的数据库重复项吗?

MySql FULLTEXT 返回 0 个结果

django - Django channel 单元测试的虚假数据