Sql server 如何在已经有rowversion列的表中存储rowversion值?
我有两个表Users,DeletedUsers和一个触发器Users\u Delete。删除用户记录时,我希望在DeletedUsers表中存储id和删除前的最后一个rowversion值 因为SQL不允许表上有多个rowversion类型的列,所以我应该如何在DeletedUsers表中存储LastUserVersion?我应该使用什么数据类型 示例代码: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,
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值。