我需要創建一個名爲「PROCESS」的表,其主鍵由兩列(IdOffice,IdProcess)組成,問題是我需要「IdProcess」包含IDENTITY屬性並依次增加,但取決於字段「IdOffice」的值如下:修改具有IDENTITY屬性的列中的數據條目
如果「IdOffice」相同,則必須逐個增加「IdProcess」,因此我更加清楚地放置了一張圖片:
我該怎麼做呢?
感謝您的幫助。
我需要創建一個名爲「PROCESS」的表,其主鍵由兩列(IdOffice,IdProcess)組成,問題是我需要「IdProcess」包含IDENTITY屬性並依次增加,但取決於字段「IdOffice」的值如下:修改具有IDENTITY屬性的列中的數據條目
如果「IdOffice」相同,則必須逐個增加「IdProcess」,因此我更加清楚地放置了一張圖片:
我該怎麼做呢?
感謝您的幫助。
你不能用IDENTITY做到這一點。你需要有一個單獨的列。問題是,這可能是非常有問題的維護。如果你有這樣的數據:
IdOffice IdProcess
--------- ----------
1 1
1 2
1 3
2 1
2 2
當你刪除第二行會發生什麼?是否需要爲IdOffice = 1的所有值重新計算IdProcess?
假設您有其他一些要排序的列,您可以在查詢時始終生成此數字,而不必支付存儲數據的成本並在表更改時處理維護。
SELECT IdOffice, IdProcess = ROW_NUMBER() OVER
(PARTITION BY IdOffice ORDER BY DateCreated)
FROM dbo.YourTable
ORDER BY IdOffice, IdProcess;
我也建議你有這個表的主鍵是身份。然後將IdOffice和IdProcess視爲行中的數據。如果你這樣做,那麼亞倫在查詢時計算IdProcess的建議就更有意義了。