至高吴上(Alfa.wu)

一个人,一生,能坚持做好一件事情是多么的牛XX啊!!!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在SQL Server中联机丛书是这样说的:

SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法。每次修改页时,都会使用当前的 @@DBTS 值对其做一次标记,然后 @@DBTS 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是 timestamp 值与时间没有任何关系。

我用口水话解释一下便于理解:

我们知道数字类型有个“标识”属性,设置好“标识种子”、“标识递增量”,每增加一条记录时,这个字段的值就会在最近的一个标识值基础上自动增加,这样我们可以知道哪些记录是先添加的,哪些记录是后添加的,但是我们无法知道哪些记录修改过。timestamp这个类型的字段呢,每增加一条记录时,它会在最近的一个时间戳基础上自动增加,当修改某条记录时,它也会在最近的一个时间戳基础上自动增加,所以我们就知道哪些记录修改过了。

通过 时间戳 控制并发:

显示数据时先取出timestamp到变量,更新、删除操作时先比较变量和现在的timestamp。一样则可操作 否则不允许。

将timestamp转成10进制----select convert(bigint,tstamp) ts from table_name;

控制并发的另一种方法:

可以定义一个 字段做mark,前提要写一个触发器,当更新或新增时mark自动加1,即可与时间戳 相似

posted on 2012-11-08 19:03  Alfa  阅读(2427)  评论(2编辑  收藏  举报