CREATE TABLE Appointment
(
Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
Maker INT NOT NULL,
Target INT NOT NULL,
[From] DateTime NOT NULL,
[To] DateTime NOT NULL,
Note NVARCHAR(128) NOT NULL,
Created FLOAT NOT NULL,
LastModified FLOAT,
LastModifiedNote NVARCHAR(128),
[Status] TINYINT NOT NULL
FOREIGN KEY (Maker) REFERENCES Person(Id),
FOREIGN KEY (Target) REFERENCES Person(Id)
)
让我在我的表格中解释一些信息:这张表是关于人与人之间的约会信息。 [From]
是应该开始约会的时间,[To]
是约会应该结束的时间。
我想做的就是:
创建约会时,请检查时间[To]
,在约会结束时,运行查询以将[Status]
更改为 4(已过期)< /强>
编辑约会时,请检查时间[To]
并执行与上一步相同的操作
例如:
9.am ,我创建的约会 [To] 2016/07/29 5:00 pm ,所以在下午5:00 时,应运行查询以将此约会的 [状态] 更改为 4 < / LI>
上午10点,我编辑了此约会,我将 [To] 更改为 2016/07/29 7:00 pm ,相反,约会在 5.00 pm 时更改了状态,现在在晚上7点更改了状态。
我认为我应该使用触发器和事件,但我不知道如何实现我的目标。
有人可以帮我吗?
谢谢。
答案 0 :(得分:0)
您可以使用触发器,但这不会解决您的问题。您想要的是在后台运行的内容,并在过期时将过期约会的状态更改为4。
有不同的方法来实现这一目标。一种非常简单的方法是创建将定期执行的SQL Server作业代理作业,例如每5分钟甚至1分钟执行一次。
在SQL Server Management Studio中找到您的服务器,最后您应该看到SQL Server作业代理。展开它并在Jobs下创建一个新工作。里面用这样的代码放了一步。
UPDATE A
SET A.Status=4
FROM Appointment A
WHERE A.Status<>4 AND CURRENT_TIMESTAMP>A.[To]
我希望这会有所帮助。