如何经常检查数据库table?

How to check a database table frequently?

我正在开发一个升级系统,当用户达到一定的分数时,他们就会升级,也就是说当 he/she 获得 100 分时将升级到 2 级。

为此我能够进行调平"real time",因为我会检查是否有任何新点添加到table,系统将计算是否he/she符合标准。

但是现在,有一个降级场景,如果用户在当前级别到期(用到期日期和时间表示)之前未能升级到下一个级别,则用户将被降级。如果我将所有关卡到期时间设置为午夜 (12 a.m.) 并且 运行 扫描所有用户以检查是否有任何用户必须降级,我就能做到这一点.

我的问题是,如果我允许等级到期时间不仅是午夜而且跟随时间 he/she 升级,说如果用户在 2016/3/24 [=27] 升级到 2 级=] a.m., 级别到期时间为 2016/4/24 9:30 a.m..

在这种情况下,如果该用户当时没有登录或没有获得任何新积分,我如何检查该用户是否应该被降级?我无法为此调低设置任何工作,因为所有用户都可以有不同的到期时间。

提前致谢。

我在商业供应系统中遇到过类似的情况,用户应该在 30/60/90 天不活动后被标记。对于每个标志,我在数据库中创建了一个 Computed Column(s),当记录被扫描时(a select 反对 table)它将 return 一个布尔值(位)计算 在当时 用户是否在那些不同的时间范围内登录的当前日期。

您可以通过将上次升级时间包含为一列来提供类似的逻辑,然后让一个单独的列应用业务逻辑来查看他们是否已经升级...等等。

结合使用以下技巧:

1) 您确实需要一个定期安排的作业(运行 宁,但是经常,比如每 10 分钟甚至每小时一次)扫描自 上次以来已经过去的新到期时间作业 运行(为此,您可以将作业执行时间存储在单独的 table 中)。顺便说一句,这个预定作业还可以处理任何其他需要无人值守处理的事件(即无需用户登录)

2) 当用户登录时,明确检查他们的级别、到期时间以及您需要的任何其他内容。这将确保您能够同步(近乎实时)准确地检查其状态,即使作业 运行 最近还不够。

结合使用这些技术,您应该可以处理任何类似的情况。