我有一个客户计算机,该计算机在午夜将数据插入到SQL Server数据库中。在SQL Server中,有触发器可在插入时删除旧记录。
问题是,客户执行了一堆单次插入命令(而不是使用批量插入),实际上是数百条。我无法控制。我要做的是记录上一次触发时间,如果datediff少于一小时,则不执行任何操作。我读过在触发器中使用WAITFOR
是一个坏主意,因为它会锁定表直到触发器执行完成。还有其他办法吗?干杯。
BEGIN
SET NOCOUNT ON;
IF DATEDIFF(HOUR, (SELECT TOP 1 TimeStamp
FROM HouseKeepingStats
ORDER BY TimeStamp DESC), GETDATE()) > 1
BEGIN
EXEC HouseKeeping;
END
END