如何解决从SQL Server中的重复表还原表
在SQL Server中,我使用下面的查询创建一个备份表,这为我提供了名为python -m pip install --upgrade pip setuptools wheel databricks-cli==0.11.0
的表Original
的副本:
Backup
如何使用我的select *
into Backup
from Original
表将所有数据恢复到Backup
(包括ID)?
原始表包含约20列,并具有1个或多个指向其ID的外键。
Original
中的某些条目可能已被删除,没有添加新条目。
我正在考虑做类似的事情:
Original
但是我不能截断外键引用的表,并且在不清空表的情况下,TRUNCATE TABLE Original
SET IDENTITY_INSERT Original ON;
INSERT INTO Original (id,val1,val2,....)
SELECT id,....
FROM Backup;
SET IDENTITY_INSERT Original OFF;
可以运行到重复的ID中
有人可以帮我吗?
解决方法
正如我提到的,这是一个XY Problem。您认为自己想做的事情与真正需要做的事情完全不同。您已经向我们描述了Y,但实际上您想做X。
此答案基于您在下面的评论
我需要从程序中删除它们的子集(大约100k),然后执行一些其他操作,否则这些操作可能会失败。如果这些操作失败,我需要恢复已删除的行。我不需要删除所有它们,我只需要将已删除的行从备份表中放回到原始表中即可。
这是在SQL Server中要做的一件简单的事情,您只需要使用事务即可。用非常简单的psuedo-SQL术语:
BEGIN TRY
BEGIN TRANSACTION DoWork;
--Do your logic here
--Do you need to also ROLLBACK under some scenario?
IF {Some Boolean Logic}
ROLLBACK TRANSACTION DoWork;
ELSE
COMMIT TRANSACTION DoWork;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION DoWork;
THROW;
END CATCH;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。