我在SQL Server数据库中有一个表,其中包含一些列以及
CreatedBy (varchar)
CreatedOn (datetime)
UpdatedBy(varchar)
UpdatedOn(datetime)
作为标准列。该CreatedOn
和CreatedBy
值被自动填充如当有加入此表的新行(使用默认值的方法)。
问:有没有在SQL Server中的任何外的现成解决方案,它可以pupulateUpdatedOn
和UpdatedBy
值和行更新的时候?
除了添加Alex K等人提到的触发器外,还可以添加RowVersion列。该数据类型以前称为TimeStamp,但不幸的是,该名称具有误导性。
这将为您提供UpdatedOn的smalldatetime时间戳,但不会提供UpdatedBy信息。
如果要将RowVersion列转换为日期和时间格式,则需要做一些工作。
(CreatedDate Smalldatetime,NewRowVersion,OldRowVersion)像这样:
Create Table dbo.UpdateTimeStamp( OldRowVersion binary(8), CreatedDate DateTime constraint DF_UpdateTimeStamp_TimeStamp Default getdate(), NewRowVersion ROWVERSION CONSTRAINT PKUpdateTimeStamp PRIMARY KEY CLUSTERED )
手动插入第一行 Insert into dbo.UpdateTimeStamp(OldRowVersion, CreatedDate) VALUES (0x0000000000000000, '2000-01-01')
每隔一分钟在表格中插入一行。
使第1步运行以下代码:
Insert into dbo.UpdateTimeStamp(OldRowVersion) SELECT TOP (1) NewRowVersion FROM dbo.UpdateTimeStamp ORDER BY NewRowVersion DESC
将时间表设置为每1分钟运行一次。
使用之间的连接子句将UpdateTimeStamp表连接到您的表,如下所示:
SELECT top 10000 mt.*, uts.CreatedDate AS ModifiedDate FROM dim.MyTable MT
LEFT JOIN dbo.UpdateTimeStamp uts ON MT.DT1RowVersion > OldRowVersion AND MT.DT1RowVersion <= NewRowVersion
ORDER BY uts.CreatedDate
嗨。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句