1

我们有 SQL Server 2017,我们想在现有数据库中创建一个新字段

  • 字段数据类型为 RowVersion
  • 但使用 SQL Management Studio 我无法定义具有 RowVersion 数据类型的字段
  • 我们可以使用时间戳
  • 但据我所知,现在不推荐使用 TimeStamp 以支持 RowVersion

对此有何建议?

这是不包含 rowversion 的 DataType 列表:

在此处输入图像描述

编辑

现在我编写了以下脚本来创建一个具有 rowversion 列类型的新表:-

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[test2](
    [id] [int] NOT NULL,
    [rowversion] [rowversion] NOT NULL,
 CONSTRAINT [PK_test2] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

但是当我在 SQL 管理工作室 GUI 中打开表时 >> 新表中新列的类型将是时间戳而不是 rowversion + 如果我为新表生成创建脚本,我将得到:-

USE [test]
GO

/****** Object:  Table [dbo].[test2]    Script Date: 26/08/2021 19:02:56 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[test2](
    [id] [int] NOT NULL,
    [rowversion] [timestamp] NOT NULL,
 CONSTRAINT [PK_test2] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

所以似乎rowversion可以用来创建表,但它会被转换为时间戳......问题是微软说时间戳已被弃用,我们应该使用rowversion来代替......完全令人困惑!

4

1 回答 1

0

这是微软文档中的错误。我提交了一个拉取请求以更正该问题,并且该 PR 已被接受。

问题以及让您感到困惑的是文档声称“时间戳”是“行版本”的同义词。但事实上恰恰相反。“Rowversion”是同义词,“timestamp”是基本类型名称。

这两个名称实际上指的是同一事物,但不同的工具对同义词的支持程度不同。图形设计师很老,很长一段时间没有更新。

于 2022-02-01T21:25:31.637 回答