SQL Server行日期最后修改

Mar*_*oli 33 sql sql-server

我的一位同事说SQL Server将上次修改的日期和时间保存在每个记录的"隐藏列"中.我很确定他说错了.你能告诉我这个吗?

Dam*_*ver 43

没有基于每行维护的隐藏列,其中包含上次修改的日期/时间.也没有包含执行此类更改的用户身份的列,也没有列标识最后执行的更改(插入或更新).

如果您想要任何这些功能,则必须实现它们.对于某些用户来说,每一个开销都可能对他们很重要,因此隐藏功能(隐藏成本)是不可接受的.

  • 我特别喜欢关于隐藏功能==隐藏成本的观点。这是一个我还没有能够向我的同事解释的概念。 (2认同)

Mar*_*sen 41

正如其他人所暗示的那样,你的同事一定是在说胡言乱语,或者指的是别的东西.为此目的,记录或页面的磁盘上结构不包含对上次更新时间的任何引用.虽然您可以在对象级别找到有关上次更新的信息,但在记录/行级别上没有此类信息可用.


Yuc*_*uck 12

Pinal Dave,您可以使用DMV来获取此信息.你的同事可能会指的TIMESTAMP是修改过的行,但据我所知,只有通过明确添加该类型的列才能提出要求.

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'AdventureWorks')
AND OBJECT_ID=OBJECT_ID('test');
Run Code Online (Sandbox Code Playgroud)


Ada*_*Dev 7

如果您想知道上次更新特定行的时间,您应该在表中维护一个"LastUpdated"时间戳列,并在每次更新时更新(例如,通过触发器自动更新)