我在sql2005中有一个datetime列。它的默认值是getdate()。 当其他人更新值时,如何自动更新它的值?
答案 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的语法。