2016-10-18 58 views
0

在我的SQL Server 2008數據庫我有一個表Inspectors如何重置Id列內容?

| Id | Inspector | 
| 11 | inspector1 | 
| 12 | inspector3 | 
| 13 | inspector4 | 
| 14 | inspector5 | 

Id列是主鍵定義爲自動遞增。

我需要重置Id列,使標識列內容類似的:

| Id | Inspector | 
| 1 | inspector1 | 
| 2 | inspector3 | 
| 3 | inspector4 | 
| 4 | inspector5 | 

任何想法,我怎麼可以改變上述所需Id內容ID列的內容?

+1

是否有依賴於'Id'的此表中的值的任何外鍵約束? – Igor

+0

@Igor是的,與外部表有關的外鍵關係 – Michael

+6

不要對你自己做這件事。你可能從這個練習中獲得什麼?身份價值只是數字而沒有實際意義。你打算怎麼處理差距(這是完全自然的)。 –

回答

2

這是可能的,但強烈不推薦。試圖做這樣的事情可以徹底搞亂你的數據庫的完整性,如果你弄錯了。如果你想要定期做這件事,那將會變得難以維繫。

如果你需要一個非生產數據庫做到這一點一次性一些測試的目的,你可以嘗試以下方法:

  • 備份數據庫
  • 將在單用戶模式的數據庫
  • 從外地
  • 刪除身份屬性添加一個新的字段名爲IDnew
  • 身份屬性添加一個新的領域相關的表也被稱爲IDnew
  • 更新使用的 原始ID的加入來獲取值
  • 腳本的FK約束的子表
  • 降FK約束所有相關表的IDnew列
  • 降在主表中的ID列,它是在子表
  • 重命名IDNew在父表
  • 關聯 向ID的列中的子表的IDnew列重命名爲第 的原始名稱在該表
  • E場運行腳本來創建FKS