为什么SSMS中无RowVersion数据类型且创建后显示为timestamp?
核心原理说明
在SQL Server中,rowversion和timestamp本质是完全相同的数据类型,rowversion只是timestamp的别名。微软将timestamp标记为弃用,只是名称层面的规范更新,二者的底层存储、功能逻辑没有任何区别。
你遇到的SSMS显示异常是SQL Server Management Studio的工具层面问题:SSMS的GUI展示、自动生成脚本的逻辑还没有同步更新别名规则,所以无论你用哪个关键字创建列,它都会统一显示为timestamp,这属于展示层面的偏差,不影响实际功能,也不违反官方的规范要求。
实操建议
- 所有手写SQL脚本统一使用
rowversion关键字即可,不管是新建表还是给现有表加字段,都符合微软的官方推荐规范,后续就算SQL Server真的移除timestamp关键字,你的脚本也能正常兼容。
给现有表新增rowversion字段的参考语句:ALTER TABLE [dbo].[你的表名] ADD [你的列名] rowversion NOT NULL - 不用纠结SSMS GUI里的类型显示、以及自动生成脚本里的
timestamp字样,如果你需要导出符合规范的SQL脚本,手动把生成脚本里的timestamp替换成rowversion即可,执行效果完全一致。 - 不要为了匹配SSMS的显示专门用
timestamp关键字写脚本,避免后续SQL Server版本移除该关键字后出现兼容性问题。
内容的提问来源于stack exchange,提问作者John John
相关产品推荐
相关产品推荐

