【问题标题】:How to get list of deleted records in SQL如何在 SQL 中获取已删除记录的列表
【发布时间】:2014-07-28 17:36:36
【问题描述】:

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

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

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

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

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

否则我必须有一个单独的代码块,如下所示:

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

有什么想法可以将上述两个语句合二为一吗?

【问题讨论】:

  • 哪个数据库后端?我有一个 SQL 服务器的解决方案,但它不能在任何其他数据库中工作
  • 基于变量定义我猜是sql server。
  • 嗨!确实是SQL server

标签: sql database delete-row


【解决方案1】:

如果使用 SQL Server,您可以使用 OUTPUT 子句来做到这一点:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      相关资源
      最近更新 更多