2014-06-26 59 views
0

問題:在表格中使用rowversion(timestamp)而不是LastModifyOn(DateTime)列的好處是什麼?

我工作的asp.net應用程序,我的目的是要確認,只有當沒有更新它在用戶的請求之間,並提交一個錶行被更新。在不同的瀏覽器

情景

  1. 用戶X和Y相同的開放發票(invoiceid = 12)
  2. 用戶X改變發票日期到1 - 7月份-2014在UI。
  3. 用戶Y改變發票日期到5月-2014在UI
  4. 用戶X按提交按鈕.--發票日期改變爲1-七月-2014
  5. 用戶Y按提交按鈕.--發票日期改變到2014年7月5日。

X和Y都不知道發票數據是不是在兩者之間改變。

解決方案-1

  1. 我們在發票表
  2. 當檢索編輯的發票數據也越來越LastModifyOn列數據
  3. 添加一列LastModifyOn(DATETIME)保持加密LastModifiedOn UI中隱藏字段中的數據
  4. 當用戶提交發票數據更改時,我們還發送LastModifiedOn進行比較。
  5. 顯示正確的信息。

解決方案 - 2

  1. 我們在發票表中添加一列版本(rowversion)
  2. 當檢索編輯的發票數據也越來越版本列數據
  3. 保存加密的版本數據隱藏在UI中
  4. 當用戶提交發票數據發生變化時,我們還發送版本進行比較。
  5. 顯示正確的信息。

X和Y知道發票數據是否在兩者之間發生變化。

問:

現在我的問題是什麼好處,我們將使用的版本(rowversion)列在LastModifyOn(日期時間)獲得...

點:

  1. 我們在發票表中審覈追蹤,以便最後更新數據已經可用。
  2. 請註明合理的長處不喜歡我們並不需要更新明確rowversion列或時間戳的定義..
+0

有多高概率打開/更新相同的發票嗎? –

+0

這是非常高的... @ BogdanSahlean – Moumit

+0

然後,我會使用一個新穎的控制機制。 rowversion數據類型用於樂觀併發控制機制。當出現低概率時,建議使用OCC。爲了衝突。但這不是你的情況。 –

回答

0

看來,如果你已經決定(我想補充,正確地)時間戳/ rowversion比日期時間好。海事組織取決於你和目的。我會盡力列出這兩者之間的差異。

  • 時間戳範圍從1970-01-01 00:00:01到2038-01-19 03:14:07;日期時間範圍從1000-01-01 00:00:00到9999-12-31 23:59:59
  • 時間戳支持時區,其中日期時間不是
  • 時間戳保證是唯一的(提供你使用得當),其中的日期時間僅僅是一個數據類型,並可以操縱(例如在發生插入指定)

PS:從V2008起「時間戳」已過時,因此使用ROWNUMBER(它們是同義詞)* 。

*資料來源:http://msdn.microsoft.com/en-us/library/ms182776.aspx

+0

@Jayachandan ......你說得對,但我的問題不同...... – Moumit

相關問題