SQL Server:从备份恢复但保留ID(身份)引用
问题描述:
我有以下情形。假设我有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的记录?
希望我做我的问题明确:)
答
如果是我,我会:
- 确定哪些行是在您的备份是不是在你的活动数据库
- 使用值为-1 *的身份值将备份中的行插入到实时数据库中。例如,如果该行在标识值为1234的备份中,则需要将其插入到实时数据库中,标识值为-1234。这不仅适用于身份值,而且适用于引用这些值的任何行(即外键)。