为什么在这个实例中使用TIMESTAMP而不是DATETIME?

时间:2017-01-03 15:05:55

标签: tsql datetime sql-server-2014

在我读过SQL时间戳用法的许多例子中,一个典型的例子是添加了一个时间戳列以防止一种竞争条件,即用户正在改变丢失了它的数据的完整性因为另一个用户首先进入那里'。

更具体地说,在对行发布更新之前,业务逻辑会交叉检查他们认为正在更改的时间戳,以便不会混淆行版本。

问题

为什么DATETIME不足以完成这项任务?事实上,根据这个逻辑 - 为什么不适合任何独特的数据类型呢?每次发布更新时NEWID(),例如?

2 个答案:

答案 0 :(得分:2)

看来我错过了时间戳的基本功能,它会自动更新。

因此,在行中调用moment.utc(3400000).format("HH:mm") 会自动增加UPDATE列,而不会手动设置它。

我会在这里留下这个答案,以防任何人对我可能错过的其他内容发表评论。

答案 1 :(得分:2)

在mySQL中,timestamp是一种物理上比datetime更小的数据类型。此外,时间戳是通用的,忽略所有时区。对于国际产品,这很重要。

建议不要使用ID,因为它们通常在插入/更新时生成。