我正在处理SQL Azure数据库。
我想在我的数据库中添加一个rowversion列到表中,但是我找不到类型"rowversion"!
是"timestamp“类型吗?如果是这样的话!我读到时间戳已被弃用。
谢谢,
发布于 2012-06-18 01:35:22
它们是一回事。Rowversion是“较晚的”版本-时间戳被弃用,因为它与时间戳的标准SQL规范不匹配。
如果数据库中没有rowversion,请使用时间戳。
http://msdn.microsoft.com/en-us/library/ms182776.aspx
发布于 2012-06-18 07:45:04
只有名称timestamp已被弃用,因为对于代表rowversion数据类型的名称来说,这是一个糟糕的选择-因为它与日期或时间无关(如果基于ANSI语言中指定的内容,则应该如此)。timestamp和rowversion类型是100%兼容和可互换的。
虽然这个名称已被弃用,但您还是可以继续使用它。即使在SQL Server2012中,rowversion甚至不在sys.types中,如果您使用rowversion创建表,它将以timestamp的形式存储在sys.columns中,如果您稍后生成表的脚本,则会以后者的形式编写脚本。
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>
附言:你在哪里看到了这个?在基于web的SQL Azure表设计器中?我怀疑,如果您使用查询编辑器创建表,那么可以使用rowversion或timestamp,而不是将自己限制在表设计器UI的下拉列表中。
https://stackoverflow.com/questions/11073392
复制相似问题