如何在我的网络应用程序中为用户指定的时间范围禁用某些 mysql 数据集并自动恢复它

How can I disable some mysql dataset for a user specified time frame in my webapp and restore it automatically

我正在开发一个 Web 应用程序来管理 mysql 数据库。 目前这项工作进展顺利

现在我需要一个功能来在用户可以在网络应用程序中选择的时间范围内停用某些数据集。

停用后:数据集在数据库中不应处于活动状态,但用户应该能够随时恢复数据集。 (我将创建一个页面:“停用”)

如果用户没有恢复数据集。然后当用户指定的时间范围结束时,应该自动恢复数据集。

我如何构建此功能并在一段时间内禁用某些数据集并在之后再次恢复它?

希望你理解并能帮助我;)

我的意思是数据集=数据库中的行

您无法在 MySQL 级别上解决此问题。该数据库引擎无法识别数据集并按照您的描述对它们进行时间安排(据我所知)。

因此,您必须在应用程序级别解决此问题。
我不知道你的数据库的结构是什么,所以假设你将数据存储在名为 dataset.

的 table 中

1.部分:停用

I need a feature to deactivate some datasets

此处可能的解决方案是向 table dataset 添加一个标志。我们将其命名为 active。参见 MySQL Bool

对于此页面

I will create a page: "Deactivated" you can fetch data by this query

SELECT *
FROM dataset
WHERE active = false;

本次更新的结果(添加标志)。 您应该在 where 子句中添加此内容来更新所有现有查询:WHERE ... AND active = true.
例如,当您为 ID 为 10 的用户获取数据时,查询为:

SELECT * 
FROM dataset
WHERE user_id = 10
    AND active = true;

2。部分:时间范围

对于这部分,我建议使用 dataset table 中的另一列 - 我们将其命名为 activation_date.

那么,这里的想法是什么?
在此列中,您存储该行何时应再次激活。

对于激活数据,您需要一个作业调度框架。每个午夜,后台进程都会执行此查询。

UPDATE dataset
SET active = true
WHERE activation_date >= CURRENT_DATE();

当然,你可以使用更细粒度的时间;或在其他时间激活您的工作。这取决于要求。

作业调度框架注意事项。对于 Java,它可能是 Quartz。我不确定您使用的是哪种编程语言;我想,它有一个类似 Quartz 的等效工具。