2016-06-07 72 views
2

我的臨時表有一列保存着連續的數字「行號」。刪除記錄後如何對列重新編號

當從表中刪除記錄時,如何創建更新此「行號」列?

ID Name Row_Number 
1  Jack 1 
14 John 2 
17 Bella 3 

如果刪除與ID = 14的記錄,我想與ID = 17被更新爲記錄ROW_NUMBER 2

我試圖這樣:

SET @deletestr = ' DELETE FROM ' + @tablename 
     + ' where isnull(ltrim(rtrim([Row_Number])),0)=isnull(ltrim(rtrim(@originalRow_Number)),0)' 
+0

相似的問題這裏: http://stackoverflow.com/questions/230006/renumber-primary-key –

回答

0

在記錄被刪除後,您可以嘗試類似下面的內容來對錶格重新編號。

UPDATE x 
SET x.row_number = x.new_row_number 
FROM ( 
    SELECT ROW_NUMBER() OVER (Order by Id) AS new_row_number, row_number  
    FROM @tableName 
) x 
+0

不幸的是行號是在VB中完成的,所以我無法像這樣在SQL數據庫中控制它。 –

+0

好的 - 你可以提供更多的細節問題,因爲目前還不清楚你需要什麼。 –

0
SET @deletestr = ' DELETE FROM ' + @tablename 
      + ' where isnull(ltrim(rtrim([Row_Number])),0)=isnull(ltrim(rtrim(@originalRow_Number)),0)' 
0

我建議你不要煩,因爲行數都是easy to derive和滋擾維護。

任何針對您的問題的SQL解決方案都將涉及自連接,因爲這是查找下一個最低值的方法。通過使用Select生成行號,可以節省自己的一些工作和服務器更新列的開銷。