在sql中获取最后修改时间

时间:2010-11-04 12:50:03

标签: sql sql-server sql-server-2005

我在sql2005中有一个datetime列。它的默认值是getdate()。 当其他人更新值时,如何自动更新它的值?

5 个答案:

答案 0 :(得分:4)

在桌子上使用触发器!

CREATE TRIGGER updateDate
ON dbo.Table
AFTER UPDATE 
AS 
UPDATE Table
SET ModifiedDate = GetDate() -- or sysdatetimeoffset()
where table.Id = inserted.Id

答案 1 :(得分:2)

您可以使用timestamp变量,基本上每次更改行时它都会自动更新,并且每个特定表只能有一个时间戳变量。

看看: http://msdn.microsoft.com/en-us/library/aa260631(SQL.80).aspx

答案 2 :(得分:1)

You can make a trigger for this,但根据您更新频率的方式可能很麻烦。

您的大部分更新是批量更新还是单个记录?它是临时的还是通过存储过程完成的?如果它是存储过程和/或批量更新,则为当前日期时间声明变量可能更有效,并使用它来更新此值。

答案 3 :(得分:0)

只需创建一个触发器。

更新后,将此值设置为getdate()。我目前找不到一些关于语法的文章,但我相信你可以做得更好;)

答案 4 :(得分:0)

这是SilverSkin答案的基础。我只是更新他的陈述以包括必要的JOIN。

CREATE TRIGGER updateDate
ON dbo.Table
AFTER UPDATE 
AS 
UPDATE Table
SET ModifiedDate = GetDate() -- or sysdatetimeoffset()
JOIN Table t JOIN Inserted i ON t.Id = i.Id

这是SQL Server 2005的语法。