2012-06-17 39 views
1

我正在研究SQL Azure数据库。rowversion in SQL Azure

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

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

感谢,

回答

2

timestamp已被否决,因为它是一个名称,表示rowversion数据类型的可怕的选择 - 因为它无关日期或时间(因为它应该,如果根据ANSI规定)。 timestamprowversion类型是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下拉列表中显示给您的列表中,我怀疑您可以使用rowversiontimestamp

+1

另请注意,“联合成员不支持时间戳和rowversion数据类型。” - [联盟指南和限制](http://msdn.microsoft.com/en-us/library/windowsazure/hh597469) –

+1

@FernandoCorreia好点,我甚至没有想过联邦。 –