【问题标题】:SQL update trigger to when system time is > 20 minutes of column time当系统时间大于列时间的 20 分钟时,SQL 更新触发器
【发布时间】: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


    【解决方案1】:

    我会说您需要一个事件时间表而不是触发器。但是,在 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)
    

    这会在每次使用时重新计算的表中添加一列。

    【讨论】:

    • 你提到的脚本很有帮助,我将在另一个场景中使用它。现在我认为提到确切的要求是我的错误。我有一列“Status_ID”,它被不同的值更新。每当“Status_ID”在当前时间的 20 分钟之前未更新为值“4”时,我的触发器应标记列“Alarm_Late_Pickup”,下一步是在“Status_ID”未设置为时标记另一列“Late_Pickup” “5”等等。当我将它修改为“Package_Status”相关时,您提供的解决方案不断变化。
    • alter table tbl_dispatching add Late_Piackup_Alaram as (case when (Pickup_Time_from
    • 我已经发布了我修改的脚本,问题是当 status_id 从 4 更改为 5(作为我的应用程序工作过程的一部分)时,Late_Pickup_Alarm 再次设置为 0。
    • @MohammadAbbas 。 . .如果您还有其他问题,您应该将其作为 another 问题提出。我觉得这个很清楚。
    • @Ragul 。 . .谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2021-03-03
    相关资源
    最近更新 更多