1

我正在开发一个 SQL Azure 数据库。

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

它是“时间戳”类型吗?如果是这样的话 !我读过时间戳已被弃用。

谢谢,

4

2 回答 2

3

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

虽然该名称已被弃用,但您不妨继续使用它。即使在 SQL Server 2012 中,rowversion也没有sys.types,如果您使用它创建表rowversion,则存储在sys.columnsastimestamp中,如果您稍后生成表的脚本,则将其脚本化为后者。

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');

结果:

name
---------
timestamp

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

PS你在哪里看到这个?在基于 Web 的 SQL Azure 表设计器中?我怀疑您可以使用rowversion或者timestamp如果您使用查询编辑器来创建表格,而不是将自己限制在表格设计器 UI 的下拉列表中呈现给您的列表中。

于 2012-06-17T23:45:03.650 回答
1

他们是一样的东西。Rowversion 是“更高”版本 - 不推荐使用时间戳,因为它与时间戳的标准 SQL 规范不匹配。

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

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

于 2012-06-17T17:35:21.757 回答