【问题标题】:Accurately updating LastUpdatedOn datetime2 column in SQL Server准确更新 SQL Server 中的 LastUpdatedOn datetime2 列
【发布时间】:2014-04-17 06:40:12
【问题描述】:

每次更新 SQL Server 表中的行时,我都想更新 LastUpdatedOn datetime2 列。为此,我正在考虑使用After Update 触发器将LastUpdatedOn 设置为sysutcdatetime()。此触发器还负责检测列更改并将旧值保存到历史表中。我的问题是,触发器方法会保存更新行时间的准确表示吗?实际更新与After Update 触发更新LastUpdatedOn 之间是否存在时间延迟?

另外,阅读http://technet.microsoft.com/en-us/library/bb630387.aspx,看起来GetSystemTimeAsFileTime() 在多个服务器上可能并不准确。在具有大量并发写入的分片数据库架构中,检测事件时间的最可靠方法是什么,以便我知道整个集群中的事件顺序是正确的?

附:我曾考虑过使用Change Data Capture,但它在 SQL Azure 中不可用。

【问题讨论】:

    标签: sql-server triggers azure-sql-database change-data-capture


    【解决方案1】:

    可能会有延迟,具体取决于您在单个语句中更新的行数以及记录的方式,因为触发器是在最后触发的。我建议在实际更新语句中更新时间。

    此外,使用输出子句将数据移动到历史表。

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      相关资源
      最近更新 更多