【发布时间】:2015-11-07 00:55:44
【问题描述】:
我对 SQL 触发器非常陌生。
我有一列“Status_ID”,它被不同的值更新。每当“Status_ID”在当前时间的 20 分钟之前未更新为值“4”时,我的触发器应标记列“Alarm_Late_Pickup”,下一步是在“Status_ID”未设置为时标记另一列“Late_Pickup”当前时间大于“Pickup_Time”列时为“5”。
【问题讨论】:
标签: sql sql-server triggers
我对 SQL 触发器非常陌生。
我有一列“Status_ID”,它被不同的值更新。每当“Status_ID”在当前时间的 20 分钟之前未更新为值“4”时,我的触发器应标记列“Alarm_Late_Pickup”,下一步是在“Status_ID”未设置为时标记另一列“Late_Pickup”当前时间大于“Pickup_Time”列时为“5”。
【问题讨论】:
标签: sql sql-server triggers
我会说您需要一个事件时间表而不是触发器。但是,在 SQL Server 中,您可以使用计算列或视图做您想做的事情:
ALTER TABLE
t
ADD
IsFinished AS (CASE
WHEN
(Pickup_Time < DATEADD(MINUTE, -20, GETDATE())
OR
(Delivery_Time < DATEADD(MINUTE, -20, GETDATE()))) THEN 1
ELSE 0 END)
这会在每次使用时重新计算的表中添加一列。
【讨论】: