Как реализовать автоматические метки времени для изменений записей (SQL Server)

Я привык использовать поля «changed_at» в моей базе данных MySQL, которые Ruby on Rails автоматически обновляет при изменении записи.

Теперь я использую ASP.NET MVC с SQL Server 2008, и мне интересно, как мне получить ту же функциональность. Есть ли в SQL Server возможность автоматического обновления поля при обновлении?


person Peter    schedule 22.05.2009    source источник


Ответы (4)


Тип данных "timestamp" дает вам двоичное значение, которое автоматически обновляется каждый раз, когда ваше поле изменяется, но это не даст вам точного значения даты/времени.

person David    schedule 22.05.2009

Вы можете использовать триггер или просто обновить его в sp, который выполняет обновление.

person CSharpAtl    schedule 22.05.2009
comment
вам придется обновить строку еще раз, если вы хотите, чтобы это сделал триггер, потому что вы не можете обновить INSERTED. Просто установите значение при обновлении других столбцов и покончите с этим. - person KM.; 22.05.2009
comment
Я бы согласился с обновлением поля, когда вы обновляете остальную часть записи, но для автоматического обновления поля можно использовать триггер. - person CSharpAtl; 22.05.2009

сделай это...

UPDATE YourTable
    SET Column1=@...
        ,@Column2=@....
        ,@Column3=@...
        ,changed_at=GETDATE()
    WHERE ...
person KM.    schedule 22.05.2009

Вы также можете использовать rowversion, который имеет тот же эффект, но поддерживается в будущем.

Ссылка — http://msdn.microsoft.com/en-us/library/ms182776.aspx

person Mond Raymond    schedule 04.11.2011