This could be potentially dangerous so i left out the call that will actually alter the tables, but you can see the output via Query Analyzer and run it without harming anything.
This would generate a datetime field in all of your tables and assign a default value of getdate.
Just use your noggin here, definetly don't cut and paste this and run it until you understand what it would do but hopefully this gives you some ideas.
You can easily generate the code needed to write all the update triggers as well.
There is prolly a MUCH better way of accomplishing this fyi!
--
set nocount on
use pubs
declare @table varchar(200)
declare @dynamicsql nvarchar(4000)
declare testcur cursor for
select name from sysobjects where xtype = 'u'
open testcur
fetch next from testcur into @table
while @@fetch_status =0
begin
set @dynamicsql = 'alter table [' + @table + '] ADD DATEFIELD datetime null DEFAULT Getdate()'
print @dynamicsql
-- exec(@dynamicsql) -- if you uncomment this line, your database will be changed!!!
fetch next from testcur into @table
end
close testcur
deallocate testcur