如何在SQL中获取已删除记录的列表

时间:2014-07-28 17:36:36

标签: sql database delete-row

我的目标是将表中正在发送到存储过程的两种类型的数据分开。在这个表中,我将有两种类型1和类型2的记录,比方说。

我想从输入的表中删除类型2的所有数据,但仍将它存储在单独的临时表中。

我知道如何使用以下语句删除数据:

DELETE t
FROM @tags t    
WHERE t.Type = 2

有没有办法检索已删除的记录,以便将它们插入到单独的临时表中?

否则我将需要一个单独的代码块,如下所示:

INSERT @dynamicTags(String)
SELECT String
FROM @tags t
WHERE t.Type = 2

将上述两个陈述合并为一个的任何想法?

2 个答案:

答案 0 :(得分:3)

如果使用SQL Server,您可以使用OUTPUT子句执行此操作:

DELETE t
FROM @tags t    
OUTPUT DELETED.* INTO @MyTableVar
WHERE t.Type = 2

答案 1 :(得分:1)

如果您使用的是postgres,则可以使用returning子句: http://www.postgresql.org/docs/9.3/static/sql-delete.html