You need to enable JavaScript to run this app. SQL DELETE语句如何不用逐列指定即可将Deleted.*插入目标表
优惠活动
大模型
产品
解决方案
定价
更多

SQL DELETE语句如何不用逐列指定即可将Deleted.*插入目标表

SQL DELETE 语句 OUTPUT INTO 免列名实现方案

最优实现方式

只要满足以下两个前提,你完全不需要手动指定任何插入列,即可实现全量删除数据导入目标表:

DELETE FROM OriginTable
OUTPUT DELETED.*
INTO NewTable
WHERE ConditionsHere

前提条件:

  • 目标表NewTable的字段数量、顺序、数据类型与原表OriginTable完全匹配
  • 目标表不存在需要跳过的特殊字段(如自增标识列、计算列、非空且未设置合理默认值的字段)

结构不匹配时的高效列生成方案

如果目标表和原表结构不一致,必须显式指定插入列,你提到的系统视图拼接就是效率最高的实现方案,SQL Server下可直接运行以下脚本生成全列名列表:

SELECT STRING_AGG(QUOTENAME(name), ', ') 
FROM sys.columns 
WHERE object_id = OBJECT_ID('OriginTable')
-- 可按需添加过滤条件排除不需要的字段:AND name NOT IN ('ColA', 'ColB')

运行后直接输出逗号分隔的全列名,复制到语句中即可使用,不需要手动逐列录入。

常见误区纠正:你原有语句中INTO NewTable (Deleted.Col1, Deleted.Col2, Deleted.Col3)的写法不符合规范:INTO后括号内为目标表的列名,不需要加Deleted.前缀,OUTPUT子句已经指定了输出数据源为删除的行数据,只要列顺序对应即可正常插入。

内容的提问来源于stack exchange,提问作者Th3Phantomz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 20:45:05