我的目标是将表中正在发送到存储过程的两种类型的数据分开。在这个表中,我将有两种类型1和类型2的记录,比方说。
我想从输入的表中删除类型2的所有数据,但仍将它存储在单独的临时表中。
我知道如何使用以下语句删除数据:
DELETE t
FROM @tags t
WHERE t.Type = 2
有没有办法检索已删除的记录,以便将它们插入到单独的临时表中?
否则我将需要一个单独的代码块,如下所示:
INSERT @dynamicTags(String)
SELECT String
FROM @tags t
WHERE t.Type = 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