之所以要写timestamp的随笔,是因为之前对它的理解存在误区,so. I have to remind myself by writing this informal essay.微软文档链接:https://msdn.microsoft.com/zh-cn/library/ ...
之所以要写timestamp的随笔,是因为之前对它的理解存在误区,so. I have to remind myself by writing this informal essay.
微软文档链接:https://msdn.microsoft.com/zh-cn/library/ms182776.aspx
释义(rowversion和timestamp是一样的好比C#里的(String和string是一个概念 同义词,写法不一样而已 ),不过微软好像建议用 rowversion ,数据库上操作还是有差别的暂时未深入研究,可查询下面的超链接看看):
公开数据库中自动生成的唯一二进制数字的数据类型。 rowversion 通常用作给表行加版本戳的机制。 存储大小为 8 个字节。 rowversion 数据类型只是递增的数字,不保留日期或时间。 若要记录日期或时间,请使用 datetime2 数据类型。
注释
从上面释义才醒悟,时间戳 和日期、时间半毛钱关系都没有。 只是个二进制值。哎.... timestamp 大家基本都知道用于并发控制的,但怎么实现 怎么操作呢。?
剩下的就不多扯了 : 让我们看看微软是如何介绍 timestamp的并发控制的: 补充下 查询当前数据库时间戳 : SELECT @@DBTS
CREATE TABLE MyTest2 (myKey int PRIMARY KEY ,myValue int, TS timestamp);GO INSERT INTO MyTest2 (myKey, myValue) VALUES (1, 0);GO INSERT INTO MyTest2 (myKey, myValue) VALUES (2, 0);GODECLARE @t TABLE (myKey int);UPDATE MyTest2SET myValue = 2 OUTPUT inserted.myKey INTO @t(myKey) WHERE myKey = 1 AND TS = myValue;IF (SELECT COUNT(*) FROM @t) = 0 BEGIN RAISERROR ('error changing row with myKey = %d' ,16 -- Severity. ,1 -- State ,1) -- myKey that was changed END;
原标题:关于timestamp的二三事
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。