sql - SQL 在一段时间后重新初始化值
问题描述
- 概括
我想防止用户同时启动两个进程。基本上我想更新一段时间后自动“重新初始化”的 SQL 数据库上的值。
- 描述
在这里,动作触发了一些计算(在服务器上执行),结果显示在网页上的图表上。图表上显示所有点大约需要 10 分钟。
可能的操作和限制:我能做的是为每个用户分配一个值(比如process )。当用户开始启动进程时,我检查进程。如果进程为 0,那么我允许用户启动,然后在 SQL 数据库上将进程更新为 1。在进程结束时(比如 10 分钟后),我将 进程设置为 0。
这工作正常,但如果用户在进程结束前(10 分钟前)关闭页面,则值进程保持为 1,因此用户无法启动新进程。
概括
如何更新一段时间后自动“重新初始化”的 SQL 数据库上的值?
解决方案
一种选择是存储用户启动操作的时间。然后,您可以在需要新流程时使用该信息:
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 分钟内没有启动进程时启动该进程。
如果查询不影响任何行,那么您知道某些条件未满足 - 因此基本上不允许用户现在启动新进程。
推荐阅读
- python - 机器学习 - 对 CNN 建模以识别图像“是”还是“不是”某物
- ios - 我想在重新安装之前卸载旧版本的 iOS 应用程序
- python-3.x - 如果目录被修改/删除/创建,则使用看门狗监视目录并将其复制到远程服务器
- java - 当用户点击窗口右上角的“X”时,无法阻止 JFrame 关闭
- xamarin - 图像未使用 XAML 以 Xamarin 形式显示?
- javascript - 有条件地查找和替换双引号中指定的字符串
- python-3.x - “”在python中是什么意思?
- vba - 在单元格单击时显示 MsgBox - 即使已选择单元格
- c - Scanf() 不等待整数输入
- c++ - 如何使用 QwtSpline 创建 B-Spline