我应该如何检查数据库中的某些用户何时变为特定年龄

How should I check when some user in database turns to a certain age

我正在做一个项目,我需要在用户达到某个年龄时执行特定操作。

当用户年满 12 岁时需要创建帐户,当用户年满 18 岁时需要禁用家长监督。

检查我的数据库中的用户是否达到特定年龄的最佳方法是什么。我是否创建一项服务来检查特定年龄的所有用户并每天早上运行。或者对于这个问题有没有其他的解决方案。

注意事项:

该程序在服务器上运行,因此 运行 昼夜不停。

检查每个用户年龄会消耗太多资源。所以我认为更好的设计是创建一个单独的 table 像这样:

ID | UserID | Date     | Age
1  |   32   | 1.1.2024 | 12
2  |   32   | 1.1.2030 | 18
3  |   42   | 2.2.2021 | 18

创建用户时,他的 12 岁和 18 岁生日会记录到此 table。然后该服务每 2 小时运行一次,并检查此 table 是否已过期。如果找到任何记录,它会调用事件并删除记录。

创建一个存储过程,其中 returns 今天生日且年龄 X 岁的用户列表。然后,每天您可以将年龄参数 (X) 传递给存储过程,以获取当天达到该年龄的用户列表。

然后,您只需要每天执行一次 运行 具有不同参数(例如 12 和 18)的存储过程,然后对返回的用户列表做任何您想做的事情。

信息不足。如果没有什么特别要做的——我的意思是,从某个年龄开始,你不需要用金钱或任何与金钱操作有关的事情来做任何特定的财务操作——不需要一直检查年龄。 我想你最好创建一个

service with event handler

在客户的任何(行为)"activity" 上(不包括客户刚刚检查他的帐户时,那里发生了什么),以检查客户年龄和相应的响应。客户年龄超过 18 岁后退订。

也可能发生这样的情况,即客户在采取任何行动之前更改银行 - 并自动为此类客户做某事 - 是一项不必要的工作。另外,每天检查所有客户也是不对的。

如果根据技术任务,客户帐户的 activity 无关紧要 - 意味着您无论如何都需要监控年龄 - 我建议您创建新的 table(添加到数据库)字段 whatever PrimaryKey, CustomerID ..., CreateAccountDate, ParentalSupervisionDate

然后创建一个新任务和 2 个新 stored procedure (SP):...Add......Check... 其中

...Add... SP 将 运行 为 18 岁以下的人创建帐户,并在您需要采取行动时填写相应的日期。

例如。客户生日是...2010 年。您用 ...2022 填充字段 "CreateAccountDate",用 ...2028 填充字段 "ParentalSupervisionDate"。

...Check... SP 将 运行 每晚检查适当的日期(与当前日期相比),并 return 您应该修改的客户帐户。

创建 temp SP 那个 运行 一次,当然是用年龄在 18 岁以下的现有客户的数据填充新的 table。

然后将 temp SP...Check... SP 添加到该新任务,运行 任务,并在任务完成后仅从任务中删除临时 SP。首先应该运行temp SP。 (不要修改现有的 tables - 非常糟糕的做法 - 在你的情况下不需要)

最后,您将获得一项服务,该服务将 运行 ...Add... 创建帐户时的 SP 和一项将 运行 每晚 ...Check... SP 的任务 [= =45=] 到第二个服务(或其他)必须修改的客户列表(客户帐户 - 更好)(通常是使用的数据集)。

当然不需要删除任何东西——这也是一个好方法。