首页 > 解决方案 > 在触发器上插入日期和时间 6 天

问题描述

我有一个执行良好的触发器,并且已经运行了 5 年。然而今天,发生了一个非常奇怪的问题,触发器的日期/时间与其前后条目相差 6 天。我想知道是否有人可以阐明可能导致这种情况的情况?

触发代码:

ALTER TRIGGER [dbo].[DateTriggerEventTimes]
ON [dbo].[EventTimes]
AFTER INSERT, UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    IF NOT EXISTS(SELECT * FROM DELETED)
    BEGIN
        UPDATE ES
        SET InsertDatetime = GETDATE(),
            LastUpdateDateTime = GETDATE()
        FROM EventTimes es
        JOIN Inserted I ON es.EVENTTIMESID = I.EVENTTIMESID
    END 

    IF UPDATE(LastUpdateDateTime) OR UPDATE(InsertDatetime)
        RETURN;

    IF EXISTS (SELECT *
               FROM INSERTED 
               -- make sure to compare inserted with (same) deleted personI
               JOIN DELETED D ON D.EVENTTIMESID = I.EVENTTIMESID)
    BEGIN
        UPDATE ES
        SET InsertDatetime = ISNULL(es.Insertdatetime, GETDATE()),
            LastUpdateDateTime = GETDATE()
        FROM EventTimes es
        JOIN Inserted I ON es.EVENTTIMESID = I.EVENTTIMESID
    END
END

有问题的查询的结果如下所示,其中 EventtimesID 2760435 是奇数。所有这些我已经通过其他方式确认了大致在同一时间进入数据库的位置,这意味着这个日期绝对不应该比其他日期早 6 天。

事件时间ID 复杂代码 已删除 上次更新日期时间 插入日期时间
2760430 4 0 2021-02-15 14:13:34.070 2021-02-15 14:13:34.070
2760433 1 0 2021-02-15 14:14:25.100 2021-02-15 14:14:25.100
2760434 2 0 2021-02-15 14:14:48.623 2021-02-15 14:14:48.623
2760435 2 0 2021-02-09 13:11:22.610 2021-02-09 13:11:22.610
2760436 2 0 2021-02-15 14:15:24.380 2021-02-15 14:15:17.980
2760437 15 0 2021-02-15 14:15:26.580 2021-02-15 14:15:26.580

标签: sql-server

解决方案


推荐阅读