如何将一批数据同时置为无效?

发布于 2022-09-12 02:14:09 字数 220 浏览 20 评论 0

问题描述

数据库中现在有很大一批数据,每天00:00执行一次定时任务,将一部分数据的状态字段写为无效,但是定时任务需要运行一段时间(例如五分钟才能全部执行完),也就是在定时任务刚开始执行时的数据是准时(00:00)被修改了,但是在排在这个任务中后面的数据就没办法准时(00:00)被修改了(后面的数据修改时间可能是00:05)

有什么办法能让这个任务中的数据,同时在00:00时候被修改呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

呆橘 2022-09-19 02:14:09

可以先将需要处理数据的状态修改,然后执行业务逻辑。
解释

老人浇花

老人每天早上7点要给花园里的百合花浇水,花园里的花是整齐的排成一排一排的,百合花是穿插在花园里,每一盆百合花被浇水的时间不一样。

同时给百合花浇水的方法

1 多来几个老人

有多少百合花,来多少个老人,老人们先走到百合花跟前,一声令下,老人一起浇水 。

2 将百合花归整到一起,用一个大的水壶一起浇水

对应技术方案

1 多线程修改数据

有多少个需要修改的数据,启动多少个线程来做修改操作。不建议使用,太扯了。

2 可以事先将需要修改的数据移动到一起,使用一条update更新数据。

类似
update 花园 set 浇水时间= 当前时间 where (花=百合花)

緦唸λ蓇 2022-09-19 02:14:09

不太清楚你的失效逻辑,但我猜你应该是想同一批数据拥有一个相同值的失效字段。
执行时间是无法避免的,如果实时获取当前时间,那么肯定是不一致的,这个无法解决。除非update set的时候采用一个固定的时间值,而不是获取执行时的当前时间。
另外是否可以改变一下逻辑,提前把一批数据的失效时间修改呢?例如打算0点设置失效时间的,那就23点的时候开始跑任务,把一批数据都设成00:00:00.

书间行客 2022-09-19 02:14:09

你的程序设计有问题。只有改实现逻辑才可以。

在数据库里给加一个字段,表示为失效时间,业务端代码实现时要对这个字段进行判断。

这样只要提前设置字段值,就可以实现你要的效果了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文