2009-11-23 62 views
3

在特定的表中,我有一個SortOrder整數字段,它告訴我的頁面顯示數據的順序。該字段中有一組數據(基於CategoryID字段),並且每個集合都有自己的排序。用戶可以在此表中添加/刪除/更新記錄。在SQL Server中處理SortOrder字段

我的問題是管理此SortOrder字段的最佳方法是什麼?我希望每次刪除或更新記錄時都要「重新填寫」它。這是我應該使用觸發器的東西嗎?或者我的代碼應該處理它並管理重新播種?

+0

爲什麼你需要在刪除後「重新播種」?爲什麼排序順序數字中的潛在缺口會打擾您? – 2009-11-23 21:51:51

+1

@marc_s:它違反了OPs OCD =) – 2009-11-23 22:03:56

+0

它也使得重新排序物品變得更容易。向上移動只是+1,向下移動是-1。 – 2009-11-23 22:07:30

回答

2

我曾經做過的事在SortOrder字段中只使用奇數,因此在更改順序時,我會從修改後的項目的當前值中加上或減去3,然後再次填充(使用奇數索引重新排序項目)。此外,我曾在每次插入或刪除後重新種植。

1

您真正必須擔心的是交換任何兩個字段。所有新的條目都會結束,我確定你有一個用戶可以改變順序的機制。訂單更改,向上或向下移動,實際上是與相鄰領域的交換。你真正關心的是所有的字段都被正確排序。不要讓數學上的審美觀念驅使你創造過於複雜的東西。 (刪除完成後,你的序列中會出現漏洞,但沒關係,這是一個用於ORDER BY的內部序列標記,不需要連續編號。)