与PostgreSQL相同的timestamp / rowversion(SQL Server)是什么

问题描述 投票:5回答:4

有人可以帮我找到与PostgreSQL等效的Timestamp / Rowversion(SQL Server)吗?

我在Mono上使用NHibernate(UNIX)。

我认为Timestamp(PostgreSQL)相当于Datetime(SQL Server) - 它不是我想要的。

编辑1:对于那些不知道SQL Server中什么是Timestamp / Rowversion的人:http://msdn.microsoft.com/en-us/library/ms182776.aspx(它主要用于乐观并发)

sql nhibernate postgresql mono
4个回答
0
投票

如果我理解正确rowversion与serial相同?如果不是 - 你必须使用触发器制作自己的。


4
投票

请参阅PostgreSQL文档中的system columns部分。特别是,xmin可能是你正在寻找的。

但要小心使用任何系统列。根据定义,它们是特定于实现的,其中一些细节可能会随着未来版本而变化。


0
投票

您可以手动创建它:

  1. 创建序列
  2. 为包含rowversion列的每个表创建插入和更新的触发器
  3. 从序列中设置rowversion列

0
投票

错过的关键是每次对行进行更新时都会更改rowversion类型,即使最终结果是行,也不会更改行。

CREATE TABLE MyTest (myKey int PRIMARY KEY  
    ,myValue int, RV rowversion);  
GO   
INSERT INTO MyTest (myKey, myValue) VALUES (1, 0);  
GO   
INSERT INTO MyTest (myKey, myValue) VALUES (2, 0);  
GO  

select * from MyTest
Go

update MyTest set myValue = 0 
go

/* row version will have changed */
select * from MyTest
Go

我找到的唯一选择是创建更新触发器。

© www.soinside.com 2019 - 2024. All rights reserved.