Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Server 2005 - ModifyDate column - Is using a Computed Column a correct way to implement this?

I just want to have a "ModifyDate" column automatically populated for me when a record is either inserted or updated.

Should I be using triggers or is it OK to use a Computed Column?

(Using SSMS2005 and SQL Server 2005 Express)

like image 753
Brian Webster Avatar asked May 12 '10 21:05

Brian Webster


2 Answers

The INSERTed part is easy - just define a default value on that column, and when you insert a new row, do not specify a value for that column.

The UPDATE part is trickier - you will have to write a trigger that fires ON UPDATE, and then updates that column. I don't think there's any other way to do this in SQL Server.

Question is: do you really need the actual calendar date? If not, if you only want to have a "marker" as to whether or not a row has changed, check out the ROWVERSION column type (formerly known as TIMESTAMP) instead.

I don't really see how you could use a computed column for this - you have to store that date somewhere, and keep it current with INSERT and each subsequent UPDATE - only a trigger will manage to do this.

like image 107
marc_s Avatar answered Sep 24 '22 06:09

marc_s


I would suggest staying away from triggers and set the Date Modified column with a stored procedure using the server getDate function.

Example:

Update Customers Set FirstName = 'Jim', LastName = 'Jones', DateModified = getDate()

like image 29
dretzlaff17 Avatar answered Sep 24 '22 06:09

dretzlaff17