我正在研究SQL Azure数据库。rowversion in SQL Azure
我想添加一个rowversion列到我的数据库中的表,但我找不到“rowversion”类型!
它是“时间戳”类型吗?如果是这样 !我读过时间戳已被弃用。
感谢,
我正在研究SQL Azure数据库。rowversion in SQL Azure
我想添加一个rowversion列到我的数据库中的表,但我找不到“rowversion”类型!
它是“时间戳”类型吗?如果是这样 !我读过时间戳已被弃用。
感谢,
他们是同样的事情。 Rowversion是“更新”版本 - 时间戳已被弃用,因为它与时间戳的标准SQL规范不匹配。
如果您的数据库中没有rowversion,请使用timestamp。只有
的名timestamp
已被否决,因为它是一个名称,表示rowversion
数据类型的可怕的选择 - 因为它无关日期或时间(因为它应该,如果根据ANSI规定)。 timestamp
和rowversion
类型是100%兼容和可互换的。
虽然名称已被弃用,但您仍可继续使用它。即使在SQL Server 2012中,rowversion
甚至不在sys.types
中,如果使用rowversion
创建表,它将作为timestamp
存储在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
出于兼容性的原因,我只是戳一点点的乐趣,因为一旦再次微软一个“按我们所说的做,而不是我们所做的”折旧政策。对于SQL Azure,您现在可能需要选择timestamp
,直到他们将其排除为止 - 对我而言,他们会继续使用旧名称,因为它继续引起如此多的混淆,似乎有些短视。 <shrug>
P.S.你在哪里看到这个?在基于Web的SQL Azure表设计器中?如果您使用查询编辑器创建表格,而不是将自己限制在表格设计器UI下拉列表中显示给您的列表中,我怀疑您可以使用rowversion
或timestamp
。
另请注意,“联合成员不支持时间戳和rowversion数据类型。” - [联盟指南和限制](http://msdn.microsoft.com/en-us/library/windowsazure/hh597469) –
@FernandoCorreia好点,我甚至没有想过联邦。 –