我仍然是SSMS的新手,但我正在尝试为人工智能角色实现每周和每月的排行榜,这将根据数据库中的平均步数值每日更新,方差为0.5x - 1.5x值。
我还想分别每周和每月重置每周和每月的值(不担心现在存储旧的分数)。
我如何在数据库中执行此操作?
这是我的表:
培训师表ID,名称,AverageSteps,WeeklySteps,MonthySteps
我在获取数值的数学部分很好,但是
我知道我想做的事情是可能的 - 我只是不确定 - 有没有人知道关于这个主题的任何好的教程?
就像@ADyson所说的那样,一个SQL Agent工作就可以解决这个问题了。您可以将作业设置为每月/每周/每天运行。
以下是用于设置SQL代理作业的Microsoft文档的链接:https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-job
调度作业肯定还有其他选项,但由于您正在执行的操作包含在SQL Server中,因此Agent作业最有意义。
我将创建一个存储过程来执行更新。然后我计划使用SQL Server代理作业每天运行存储过程。
在存储过程中,您有三个部分。每次存储的proc运行时,第一部分代码都会运行,它会使用WeeklySteps
值更新MonthlySteps
和AverageSteps
值。
下一节将包含在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