我正在开发一个 SQL Azure 数据库。
我想在我的数据库中的表中添加一个 rowversion 列,但我找不到“rowversion”类型!
它是“时间戳”类型吗?如果是这样的话 !我读过时间戳已被弃用。
谢谢,
我正在开发一个 SQL Azure 数据库。
我想在我的数据库中的表中添加一个 rowversion 列,但我找不到“rowversion”类型!
它是“时间戳”类型吗?如果是这样的话 !我读过时间戳已被弃用。
谢谢,
只有名称 timestamp
已被弃用,因为对于表示数据类型的名称来说,这是一个可怕的选择rowversion
——因为它与日期或时间无关(如果基于 ANSI 中指定的内容,它应该如此)。和类型是 100% 兼容timestamp
和rowversion
可互换的。
虽然该名称已被弃用,但您不妨继续使用它。即使在 SQL Server 2012 中,rowversion
也没有sys.types
,如果您使用它创建表rowversion
,则存储在sys.columns
astimestamp
中,如果您稍后生成表的脚本,则将其脚本化为后者。
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 的下拉列表中呈现给您的列表中。
他们是一样的东西。Rowversion 是“更高”版本 - 不推荐使用时间戳,因为它与时间戳的标准 SQL 规范不匹配。
如果您的数据库中没有 rowversion,请使用时间戳。