2015-04-04 89 views
0

我有以下情形。假設我有3個表格:SQL Server:從備份恢復但保留ID(身份)引用

ID是整數和帶有標識(1,1)的主鍵。

  • Clients(ID(PK),名稱)
  • Orders(ID(PK),客戶端ID(FK),日期)
  • OrderDetails(ID(PK),訂單ID(FK),產品,數量,價格)

比方說,我意外刪除了這3個表中的所有記錄,但我有一個數據庫備份。問題是如何將已從備份數據庫中刪除的記錄重新插入當前數據庫?

我知道我可以簡單地"set identity_insert on"並使用"insert into",但它是一個Web應用程序,它必須保持活動狀態,並且有來自用戶的插入。

如果我插入所有Clients回來,他們的ID將不同,並且Orders(ClientID)不能再指向那個。所以與Orders/OrderDetails表。

我需要一些方法來更新新的外鍵id。我怎樣才能做到這一點?

某種臨時表保留舊ID和新ID的記錄?

希望我做我的問題明確:)

回答

0

如果是我,我會:

  1. 確定哪些行是在您的備份是不是在你的活動數據庫
  2. 使用值爲-1 *的身份值將備份中的行插入到實時數據庫中。例如,如果該行在標識值爲1234的備份中,則需要將其插入到實時數據庫中,標識值爲-1234。這不僅適用於身份值,而且適用於引用這些值的任何行(即外鍵)。