0

我对 SSMS 还很陌生,但我正在尝试为 AI 角色实现每周和每月排行榜,该排行榜将根据数据库中的平均步数值每天更新,方差为 0.5x - 1.5x价值。

我还想分别每周和每月重置每周和每月的值(暂时不担心存储旧分数)。

我将如何在数据库中执行此操作?

这是我的桌子:

培训 师表 ID、名称、AverageSteps、WeeklySteps、MontySteps

我在获取值的数学部分很好,但是

  • 如何运行事件/脚本以使用平均步数值更新每周和每月的步数(这将每天执行一次)?
  • 如何运行事件/脚本来重置每周的每周步数和每月的每月步数?

我知道我想做的事情是可能的——我只是不确定如何——有人知道关于这个主题的任何好的教程吗?

4

2 回答 2

1

我会创建一个存储过程来执行更新。然后我会安排存储过程每天使用 SQL Server 代理作业运行。

在您的存储过程中,您将拥有三个部分。每次存储过程运行时都会运行第一部分代码,它会使用该值更新WeeklyStepsand值。MonthlyStepsAverageSteps

下一部分将包含在一个IF块中,并将重置该WeeklySteps值。你的IF情况会是这样的:

IF DATEPART(WEEKDAY,GETDATE()) = 1 --This is true only on Sundays

最后一部分也将包含在一个IF块中,并将重置该MonthlySteps值。你的IF情况会是这样的:

IF DATEPART(DAY,GETDATE()) = 1 --This is true only on the first of the month
于 2017-12-28T23:06:53.810 回答
0

就像@ADyson 所说,SQL 代理工作会很好地解决这个问题。您可以将作业设置为每月/每周/每天运行。

这是用于设置 SQL 代理作业的 Microsoft 文档的链接: https ://docs.microsoft.com/en-us/sql/ssms/agent/create-a-job

当然还有其他用于调度作业的选项,但是由于您正在执行的操作包含在 SQL Server 中,因此代理作业最有意义。

于 2017-12-28T22:25:00.797 回答