sql在一段时间后重新初始化值

w46czmvw  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(360)

总结
我想防止用户同时启动两个进程。基本上,我想更新一个sql数据库上的值,该值在一段时间后自动“重新初始化”。
描述
在这里,操作触发一些计算(在服务器上执行),结果显示在网页的图表上。所有点显示在图表上大约需要10分钟。
可能的操作和限制:我能做的是给每个用户分配一个值(比如进程)。当用户开始启动进程时,我检查进程。如果进程为0,则我允许用户启动,然后在sql数据库上将进程更新为1。在进程结束时(比如10分钟后),我将进程设置为0。
这可以正常工作,但如果用户在进程结束前(10分钟前)关闭页面,则值进程将保持为1,因此用户无法启动新进程。
总结
如何更新一段时间后自动“重新初始化”的sql数据库上的值?

dbf7pr2w

dbf7pr2w1#

一种选择是存储用户启动动作的时间。然后,您可以在需要新流程时使用该信息:

create table users (
    user_id int primary key,
    ... -- other columns as needed
    in_progress int,
    launched_at datetime
);

当用户想要启动进程时,可以运行以下查询:

update users
set in_progress = 1, launched_at = now()
where 
    in_progress = 0
    or (launched_at is null or launched_at < now() - interval 10 minute)

这允许用户仅在没有进程正在进行或在过去10分钟内没有启动任何进程时启动进程。
如果查询不影响任何行,那么您就知道某些条件没有满足——因此基本上现在不允许用户启动新进程。

相关问题