加入收藏 | 设为首页 | 会员中心 | 我要投稿 湘西站长网 (https://www.0743zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何在Sql Server 2005上获取最后一次插入/更新/

发布时间:2021-01-25 22:06:11 所属栏目:MsSql教程 来源:网络整理
导读:不是 my previous question的副本 当表/数据库在Sql Server 2005上有插入/更新/删除时,有没有办法获得最新的日期时间?最好不要创建触发器.. 我知道当你需要每行最后一次更新时,你需要触发器.但是我不确定当你想要获得整个表的最后一次更新时是否需要它们. 解

不是 my previous question的副本

当表/数据库在Sql Server 2005上有插入/更新/删除时,有没有办法获得最新的日期时间?最好不要创建触发器..

我知道当你需要每行最后一次更新时,你需要触发器.但是我不确定当你想要获得整个表的最后一次更新时是否需要它们.

解决方法

您可以轻松获取上次插入/更新/删除的日期,如下所示:
CREATE FUNCTIOn fn_TablesLastUpdateDate(@Date NVARCHAR(20))

RETURNS @table TABLE(TableName NVARCHAR(40),LastUpdated Datetime)

AS

BEGIN


IF(@Date='') OR (@Date Is Null) OR (@Date='0')

    BEGIN
        INSERT INTO @table
        SELECT TOP 100 PERCENT TABLENAME,LASTUPDATED FROM 
        (
            SELECT  B.NAME AS 'TABLENAME',MAX(STATS_DATE (ID,INDID)) AS LASTUPDATED
            FROM    SYS.SYSINDEXES AS A
                    INNER JOIN SYS.OBJECTS AS B ON A.ID = B.OBJECT_ID
            WHERE   B.TYPE = 'U'  AND STATS_DATE (ID,INDID) IS NOT NULL 
            GROUP BY B.NAME
        ) AS A
        ORDER BY LASTUPDATED DESC
    END
ELSE

    BEGIN
        INSERT INTO @table
        SELECT TOP 100 PERCENT TABLENAME,INDID)) AS LASTUPDATED,CONVERT(VARCHAR,INDID)),103) as Date
            FROM    SYS.SYSINDEXES AS A
                    INNER JOIN SYS.OBJECTS AS B ON A.ID = B.OBJECT_ID
            WHERE   B.TYPE = 'U'  AND STATS_DATE (ID,INDID) IS NOT NULL 
            GROUP BY B.NAME
        ) AS A
        WHERE Date=@Date
        ORDER BY LASTUPDATED DESC
    END
RETURN

END



-- SELECT * from fn_TablesLastUpdateDate('06/11/2012')

(编辑:湘西站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读