捕捉时间的最佳和最简单的方法

时间:2011-08-03 02:00:14

标签: sql-server tsql

如何轻松捕获将记录添加到数据库的时间。我正在使用这个

create table YourTable
(
  Created datetime default getdate()
)

还有其他选择吗?

3 个答案:

答案 0 :(得分:2)

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

其他方法将使用插入触发器,这可能更慢,稍微复杂一点,因为代码在两个地方。或者您可以通过SP引导所有更新,这也会更新Created字段 - 除非您仔细设置权限,否则再次稍微复杂且容易规避。

答案 1 :(得分:1)

选项:

  1. DEFAULT COLUMN(正如你所知)
  2. INSERT TRIGGER,将列更新为current_timestamp
  3. 选项#2更加万无一失,因为它始终使用GETDATE()进行更新。使用选项#1允许用户通过在INSERT子句中指定它来手动覆盖创建日期。

答案 2 :(得分:1)

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

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

另外 - 考虑数据类型的大小 - 日期时间是8字节 - 你可以将列定义为smalldatetime并将其改进为4字节(或者在2008年,只是普通旧日期,即3字节 - 尽管你可能实际上也想知道时间。)

触发器也是一个选项,但不是优选的IMO - 首先,如果违反任何约束(例如与您刚创建的表的外部关系,忘记触发器 - oops,它们可以回滚! )