2
我有一個通過父主鍵與父項關聯的子表。目前,子表的標準ID爲int IDENTITY(1,1)
。這對我的目的來說很好,不會改變,但對用戶來說,當他們查看與父級關聯的子行時,他們將看到脫節ID的列表。用於記錄組的標識自動遞增ID
我想有一個顯示ID從1開始,併爲每組記錄增量(如標識列)。
我的孩子表看起來像這樣;
ChildID-PK ParentID-FK DisplayID
1 1 1
2 1 2
3 2 1
4 3 1
5 1 3
可能的解決方案;
- 插入記錄時,使用
SELECT MAX(DisplayID) + 1 FROM tbl WHERE ParentID = @ParentID
作爲新記錄的DisplayID。如果很多人一次編輯一組記錄,我可以看到這是有問題的。 - 使用
ROW_NUMBER()
可以獲取DisplayID,但在這種情況下,如果記錄被刪除,現有記錄的DisplayID可能會更改。這不會發生,因爲用戶在輸入數據時可能會引用特定的DisplayID。
如果它僅用於顯示目的,當查詢特定ParentID的記錄時,是否可以通過ChildID子句的順序使用row_number()? – mellamokb 2011-02-17 15:36:31
問題在於如果中間的一行被刪除,我不希望顯示ID改變。用戶可以指的是「孩子4」,但是明天當「孩子3」被刪除時,「孩子4」變成「孩子3」。 – 2011-02-17 15:42:17