2016-01-17 47 views
0

道歉的笨拙標題可以自由地建議改進。如何增加每個插入行的Couner列1,但每個guid

我有一個表記錄,有一個用戶ID 這指的是誰的製造沉積。還有計數器列是標識(1,1)(請務必記住它與主鍵Id列不一樣)。

當我們開始從不同的賬戶存款時,問題就變得很明顯,因爲之前用戶可能會要求123到127的記錄數,得到5個金額,但現在他們的選擇可能是123,125,126甚至更糟 - 在所有。

處理它的唯一選擇是,我可以想象創建一個業務邏輯層,用於檢查用戶的最高沉積計數器並添加新記錄。

但它肯定會很好,讓它自動工作。像身份(1,1,guid)。可能嗎?

回答

1

的唯一選擇,據我可以想像創建檢查的最高沉積櫃檯業務 邏輯層處理它對於用戶 ,並添加新記錄並增加1。

學習時間。

  • 將最後給定的號碼添加到帳戶表中。
  • 使用觸發器在SQL Server的插入事件中分配更高的數字。

已完成。這顯然假設您的關係數據庫以關係方式使用,因此記錄與用戶表相關,而不僅僅是保存用戶ID(這將是一個糟糕的設計)。

如果不是,您還可以通過所述觸發器維護一個包含所有可見GUID的表。

+0

「* ...在插入事件... *」中?你是指我的事件,從我的C#插入東西?或者是觸發器的SQL術語?我一直害怕觸發器,所以現在是時候成長一對了,呵呵。 –

+0

不,我的意思是SQL Server觸發器。如果你對SQL Server一無所知,你就不應該對它進行編程。數據庫服務器具有許多我們學習使用我們的工具的知識。其中之一是通過在服務器上運行觸發腳本來更改插入的數據。 – TomTom

1

要維護這樣的列,您需要一個觸發器。

在查詢表中你可能會考慮計算值:

select r.*, row_number() over (partition by guid order by id) as seqnum 
from records r; 
+0

哦,我明白了。我忘記提到我會用EF查詢表格,因此在插入行時實際需要存儲的數字。不過,對於一個整潔的陳述來說,+1。 –

+0

@KonradViltersten。 。 。您可以使用視圖來計算數字。 EF可以訪問視圖。 –

相關問題