我正在研究SQL Azure数据库。
我想在我的数据库中的表中添加一个rowversion列,但我找不到类型“rowversion”!
它是“时间戳”类型吗?如果是这样 !我已经读过时间戳已被弃用。
谢谢,
答案 0 :(得分:2)
仅弃用名称 timestamp
,因为对于代表rowversion
数据类型的名称来说,这是一个可怕的选择 - 因为它与日期无关或时间(如果基于ANSI中指定的内容,则应如此)。 timestamp
和rowversion
类型100%兼容且可互换。
虽然名称已被弃用,但您也可以继续使用它。即使在SQL Server 2012中,rowversion
中的sys.types
也不在rowversion
,如果您使用sys.columns
创建表格,则会将timestamp
存储为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
而不是timestamp
以用于将来的兼容性原因,我只是戳了一点乐趣,因为微软再一次“做我们做说,不像我们做的那样“弃用政策。在SQL Azure的情况下,您可能必须立即选择<shrug>
,直到他们对此进行排序 - 对我来说似乎有点短视,他们会继续使用旧名称,因为它继续引起如此多的混乱那里。 rowversion
P.S。你在哪里看到这个?在基于Web的SQL Azure表设计器中?我怀疑如果您使用查询编辑器来创建表,则可以使用timestamp
或{{1}},而不是将自己限制在表设计器UI的下拉列表中显示给您的列表。
答案 1 :(得分:0)
他们是一回事。 Rowversion是“后期”版本 - 不推荐使用时间戳,因为它与时间戳的标准SQL规范不匹配。
如果您的数据库中没有rowversion,请使用时间戳。