SQL Server 2000函数记录创建的日期时间

时间:2020-03-06 14:33:12  来源:igfitidea点击:

当添加数据库中的记录时,我被赋予了显示任务,但是以前的开发人员从来没有为此做一个字段,而且我无法返回并为所有现有记录确定日期。有没有一种简单的方法可以从SQL Server 2000查询中提取记录创建日期。

SELECT RECORD_CREATED_DATE FROM tblSomething WHERE idField = 1

" RECORD_CREATED_DATE"不是现有表中的字段。是否有某种SQL函数可获取此信息?

解决方案

如果未将其存储为字段,则在事务日志回收后(通常每天),甚至可能更快,该信息就会丢失。

我不知道如何获取现有记录的此信息。但是,接下来,我们可以创建一个存储TableName和RecordCreateDate(或者类似名称)的审核表。

然后,对于相关表,我们可以创建一个插入触发器:

CREATE TRIGGER trigger_RecordInsertDate
ON YourTableName
AFTER INSERT
AS
BEGIN
 -- T-SQL code for inserting a record and timestamp
 -- to the audit table goes here
END

不,很遗憾,插入日期或者最后更新日期不会自动与每个记录一起存储。

为此,我们需要在表中创建两个日期时间列(例如CreatedOn,UpdatedOn),然后在INSERT触发器中设置CreatedOn = getdate(),在UPDATE触发器中设置UpdatedUpdate = getdate()。

CREATE TRIGGER tgr_tblMain_Insert
   ON  dbo.tblMain
   AFTER INSERT
AS 
BEGIN
    set nocount on

    update dbo.tblMain
    set CreatedOn = getdate(),
    CreatedBy = session_user
    where tblMain.ID = INSERTED.ID

END

我还喜欢创建CreatedBy和UpdatedBy varchar(20)列,将其设置为session_user或者通过其他方法进行更新。

创建另一列,并为其赋予默认值getdate(),该值将处理插入的日期,对于更新的日期,我们将需要编写更新触发器

我将从现在开始输入这些信息开始。创建两列,InsertedDate,LastUpdatedDate。在第一个上使用默认值getdate(),并在第二个上使用更新触发器(可能还需要考虑UpdatedBy)。然后,我将编写一个查询以使用CASE语句显示信息,以显示日期(如果有的话)并显示" Unknown"(该字段为空)。如果我们需要存储所有更新的记录,这将变得更加复杂。然后,我们需要使用审核表。