我正在使用 Miscrosoft SQL Server 2012,因为在这篇文章中说:
时间戳语法已弃用。此功能将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。
我决定使用“rowversion”列而不是“timestamp”列。所以,我创建了下表:
CREATE TABLE [dbo].[TestTable]
(
[Col001] [INT] NOT NULL
,[Col002] [CHAR](2) NOT NULL
...
,[Col00N] [DATETIME2] NOT NULL
,[RowVersionID] [ROWVERSION] NOT NULL
,CONSTRAINT [PK_ProtoSurveyGlobalizationChanges_RowVersionID] PRIMARY KEY CLUSTERED
(
[RowVersionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
一切看起来都很好,直到我按下“ALT+F1”组合,它为我提供了有关我的表的信息(如列详细信息),并且我看到“RowVersionID”列被标记为“timestamp”类型。
我所做的下一个想法是使用 SQL Server Management Studio 2012“删除并创建我的表”,“生成的 SQL”改变了我的原始查询,如下所示:
[RowVersionID] [timestamp] NOT NULL
为什么服务器没有使用我最初设置的类型,为什么在文章中我被建议不要使用“时间戳”,但服务器以某种方式选择了它?