Sql server 如何在已经有rowversion列的表中存储rowversion值?

Sql server 如何在已经有rowversion列的表中存储rowversion值?,sql-server,rowversion,Sql Server,Rowversion,我有两个表Users,DeletedUsers和一个触发器Users\u Delete。删除用户记录时,我希望在DeletedUsers表中存储id和删除前的最后一个rowversion值 因为SQL不允许表上有多个rowversion类型的列,所以我应该如何在DeletedUsers表中存储LastUserVersion?我应该使用什么数据类型 示例代码: CREATE TABLE [dbo].[Users] ( [ID] [uniqueidentifier] NOT NULL,

我有两个表Users,DeletedUsers和一个触发器Users\u Delete。删除用户记录时,我希望在DeletedUsers表中存储id和删除前的最后一个rowversion值

因为SQL不允许表上有多个rowversion类型的列,所以我应该如何在DeletedUsers表中存储LastUserVersion?我应该使用什么数据类型

示例代码:

CREATE TABLE [dbo].[Users] (
    [ID] [uniqueidentifier] NOT NULL,
    [Name] [nvarchar](100) NOT NULL,
    [Version] [rowversion] NOT NULL
)

CREATE TABLE [dbo].[DeletedUsers] (
    [ID] [uniqueidentifier] NOT NULL,
    [LastUserVersion] [rowversion] NOT NULL,    -- ERROR
    [Version] [rowversion] NOT NULL
)

CREATE TRIGGER [dbo].[Users_Delete] ON [dbo].[Users]
    AFTER DELETE
    AS
    BEGIN
    SET NOCOUNT ON

    INSERT INTO [dbo].[DeletedUsers]
    (
        ObjectID,
        LastUserVersion
    )
    SELECT
        ObjectID,
        Version
    FROM DELETED
    SET NOCOUNT OFF
    END
如何将行版本值存储在已具有 行版本列

根据:

不可为空的rowversion列在语义上等同于 二进制8列。可为空的rowversion列在语义上为空 相当于varbinary8列

由于[rowversion]列的定义为[Version][rowversion]非空,因此可以使用BINARY8

如何将行版本值存储在已具有 行版本列

根据:

不可为空的rowversion列在语义上等同于 二进制8列。可为空的rowversion列在语义上为空 相当于varbinary8列


由于[rowversion]列的定义为[Version][rowversion]非空,因此可以使用BINARY8。

我认为保留已删除行的rowversion没有任何意义。此外,每个表不仅限于一个rowversion列,还不允许插入或更新该列


也就是说,rowversion是Binary8,所以您可以使用它。基本上,它是一个数字,所以你可以把它转换成一个更方便的整数。对于8字节,您将需要bigint。

我认为保留已删除行的行版本没有任何意义。此外,每个表不仅限于一个rowversion列,还不允许插入或更新该列


也就是说,rowversion是Binary8,所以您可以使用它。基本上,它是一个数字,所以你可以把它转换成一个更方便的整数。对于8字节,您需要bigint。

假设车主和汽车之间存在一对多关系。我想检索所有车主,他们的汽车集合在某个rowversion值之后发生了更改、插入、删除。如果不将汽车的最后一行版本存储在已删除的表中,车主将被排除在结果集中,如果这是对其集合的唯一更改。hmm。。现在我想我不需要它了。DeletedUsers记录上的rowversion值不会再次递增,因此我只能使用该表中已经存在的rowversion值。假设车主和汽车之间存在一对多关系。我想检索所有车主,他们的汽车集合在某个rowversion值之后发生了更改、插入、删除。如果不将汽车的最后一行版本存储在已删除的表中,车主将被排除在结果集中,如果这是对其集合的唯一更改。hmm。。现在我想我不需要它了。DeletedUsers记录上的rowversion值不会再次递增,因此我只能使用该表上已经存在的rowversion值。