2011-08-03 29 views
1

如何轻松捕获记录添加到数据库的时间。我正在使用这个最佳和最简便的捕捉时间的方式

create table YourTable 
(
    Created datetime default getdate() 
) 

还有其他的选择吗?

+0

一定要将NOT NULL添加到列中。 – beach

+1

考虑GETUTCDATE()而不是GETDATE()。 –

+0

应用程序的体系结构是什么?所有数据访问是通过存储过程还是视图,还是应用程序直接查询表? –

回答

1

仍然使用默认约束......还有其他值可以考虑使用 - 每个值都有不同的优点(涉及通用时间,精度等)。

http://msdn.microsoft.com/en-us/library/ms188383.aspx

而且 - 考虑你的数据类型的大小 - 日期时间为8个字节 - 你可以定义列SMALLDATETIME和完善,为4个字节(或2008年,只是普通的旧日期,这是3字节 - 虽然你可能真的很喜欢知道时间)。

触发器也是一种选择,但并不是优选的IMO - 一方面,如果违反任何约束条件(例如与刚刚创建的表的外部关系,忘记触发器 - oops !)

2

我认为这是规范的方法,你有问题吗?

其他方法将使用插入触发器,这可能是较慢和稍微复杂的代码是在两个地方。或者你可以通过一个SP来引导所有的更新,这也会更新创建的字段 - 这又稍微复杂一些,并且很容易规避,除非你的权限被仔细设置。

1

选项:

  1. 默认列(你有)
  2. INSERT触发器更新列到CURRENT_TIMESTAMP

选项#2是比较简单的,因为它总是与GETDATE更新()。使用选项#1允许用户通过在INSERT子句中指定它来手动覆盖创建的日期。