如何将表的备份复制到主表中?

时间:2014-01-16 16:23:04

标签: sql sql-server tsql select

我有TABLE1,在进行更改之前我已经对表做了备份:

SELECT * INTO TABLE1BACKUP FROM TABLE1

我已经对表的备份中的数据进行了更改,所以现在我想将备份表数据复制到主表中。如何取回原始数据?我需要截断我的主表并从备份表中复制所有数据。

1 个答案:

答案 0 :(得分:4)

您只能SELECT INTO新表。在您的情况下,您需要:

TRUNCATE TABLE dbo.Table1;
INSERT dbo.Table1 SELECT * FROM dbo.Table1Backup;

或其他选项(例如,如果有外键,上述内容将无效):

DELETE dbo.Table1;
INSERT dbo.Table1 SELECT * FROM dbo.Table1Backup;

如果有外键子行指向此表,则您还需要先删除或禁用这些约束。

如果没有您需要担心的约束等,那么执行此操作的方法就更少了:

BEGIN TRANSACTION;
EXEC sp_rename 'dbo.Table1', N'Table1Old', OBJECT;
EXEC sp_rename 'dbo.Table1Backup', N'Table1', OBJECT;
COMMIT TRANSACTION;
DROP TABLE dbo.Table1Old;