timestamp 详解

作者:vkvi 来源:ITPOW(原创) 日期:2008-12-16

每一个数据库都有一个计数器,这个计数器记录着数据行的插入更新行为。如果我们为一个表中增加 timestamp 列,那么,该列将记录每一个数据行的计数器值。

假如数据库中当前的计数器是 20(实际中不是数字类型,为了方便解释,这里用数字类型):那么在表 A 中插入一条记录后,插入行的 timestamp 为 21;然后更新表 B 的一条记录后,更新行的 timestamp 为 22;现在再更新刚才插入的行,此时其 timestamp 为 23。

可以看出,每个行都有一个 timestamp,并且是在数据库的所有表中唯一的,当更新行时,被更新的行的 timestamp 会加 1。注意删除不影响计数器。

timestamp 作用

timestamp 就是设计来避免更新冲突的,您可以参见利用 timestamp 避免更新冲突这篇文章。当然还有其它一些作用,比如 SQL Server 全文索引时用以增量填充。

timestamp 应用

我们只需要添加一个为 timestamp 类型的列就可以了,它会自动记下当前计数器的值。一个表只能有一个 timestamp 列,并且不能将该列作为主键。不可为空的 timestamp 列在语义上等价于 binary(8) 列;可为空的 timestamp 列在语义上等价于 varbinary(8) 列。

timestamp 会重复吗?

可能会,在使用 select into 时。

如何查看数据库中当前的 timestamp?

请使用 @@DBTS,比如在查询分析器中用:print @@DBTS。

增、改没有 timestamp 列的表数据时,@@DBTS 会变吗?

不会。

相关阅读

相关文章