簡體   English   中英

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

[英]What is the equivalent of timestamp/rowversion (SQL Server) with PostgreSQL

有人可以幫我找到與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 (它主要用於樂觀並發)

請參閱PostgreSQL文檔中的系統列部分。 特別是, xmin可能就是你要找的東西。

但要小心使用任何系統列。 根據定義,它們是特定於實現的,其中一些細節可能會隨着未來版本而變化。

如果我理解正確rowversion與serial相同? 如果不是 - 你必須使用觸發器制作自己的。

您可以手動創建它:

  1. 創建序列
  2. 為包含rowversion列的每個表創建插入和更新的觸發器
  3. 從序列中設置rowversion列

錯過的關鍵是每次對行進行更新時都會更改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

我找到的唯一選擇是創建更新觸發器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM