使用Spring Boot Data,2个更新语句按顺序执行,但几乎同时执行(可能是1或2纳秒),如下所示:
更新StatusTable SET status ='IN-PROGRESS'和updatedTime = NOW();
更新StatusTable SET status ='DONE'和updatedTime = NOW();
2个更新语句以相同值返回updatedTime。
在UI中,我有一个屏幕,根据updatedTime按时间顺序显示StatusTable。由于相同的updatedTime,它显示错误的顺序:
1)READY
2)进行中
而不是
1)进行中
2)准备
注意:在我的情况下,Thread.sleep()或延迟时间不是一个好的选择
答案 0 :(得分:2)
我打赌你正在使用秒精度的时间戳吗?开始使用更精细的精度,如mili或微秒精度。如果这没有帮助(因为你使用超快的计算机和2次调用NOW()给出相同的纳秒读数)你将不得不找到另一种解决方案,并根据时间戳停止。
作为一种解决方法,我会通过自动增量ID切换或(至少添加)排序。如果您的SQL遵循“时间顺序”,那么IDS将是唯一的并且顺序相同。
如果您有自动增量ID,我会尝试ORDER BY updatedTime ASC, id ASC
这会导致在时间戳相等时按ID进行排序,但是要进行测试我认为仅按id
排序会给您带来理想的结果。< / p>