首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Azure中的rowversion

SQL Azure中的rowversion
EN

Stack Overflow用户
提问于 2012-06-18 01:32:47
回答 2查看 1.6K关注 0票数 1

我正在处理SQL Azure数据库。

我想在我的数据库中添加一个rowversion列到表中,但是我找不到类型"rowversion"!

是"timestamp“类型吗?如果是这样的话!我读到时间戳已被弃用。

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-18 01:35:22

它们是一回事。Rowversion是“较晚的”版本-时间戳被弃用,因为它与时间戳的标准SQL规范不匹配。

如果数据库中没有rowversion,请使用时间戳。

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

票数 1
EN

Stack Overflow用户

发布于 2012-06-18 07:45:04

只有名称timestamp已被弃用,因为对于代表rowversion数据类型的名称来说,这是一个糟糕的选择-因为它与日期或时间无关(如果基于ANSI语言中指定的内容,则应该如此)。timestamprowversion类型是100%兼容和可互换的。

虽然这个名称已被弃用,但您还是可以继续使用它。即使在SQL Server2012中,rowversion甚至不在sys.types中,如果您使用rowversion创建表,它将以timestamp的形式存储在sys.columns中,如果您稍后生成表的脚本,则会以后者的形式编写脚本。

代码语言:javascript
复制
CREATE TABLE dbo.what_the(heck ROWVERSION);

SELECT t.name 
  FROM sys.types AS t
  INNER JOIN sys.columns AS c
  ON t.system_type_id = c.system_type_id
  OR t.user_type_id = c.user_type_id
WHERE 
  c.[object_id] = OBJECT_ID('dbo.what_the');

结果:

代码语言:javascript
复制
name
---------
timestamp

这是一个小玩笑,出于将来的兼容性原因,你绝对应该使用rowversion而不是timestamp,我只是开个小玩笑,因为微软又一次有了“照我们说的做,不按我们做的做”的弃用政策。在SQL Azure的情况下,你现在可能不得不选择timestamp,直到他们解决这个问题--在我看来,他们会继续使用旧名称是一种目光短浅的做法,因为它继续造成如此多的混乱。<shrug>

附言:你在哪里看到了这个?在基于web的SQL Azure表设计器中?我怀疑,如果您使用查询编辑器创建表,那么可以使用rowversiontimestamp,而不是将自己限制在表设计器UI的下拉列表中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11073392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档