You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用增量变量将行复制到同表并生成拼接式主键?

如何用增量变量复制行并更新主键列?

你的思路方向是对的,但原代码里的@x是个全局变量,只会递增一次,所以所有插入的行都会用同一个主键值(50487001),这肯定会触发主键冲突,而且也达不到你要的逐行递增的效果。

要实现逐行生成递增的主键,我们可以用ROW_NUMBER()函数来生成每行对应的增量序号,这样就能和原数据的行数一一对应,生成连续的主键值。

修改后的代码

USE [Target Database]
GO
BEGIN
    INSERT INTO [dbo].[Target_Table] ([Primary_Key],[Col1],[Col2])
    SELECT 
        CONCAT('50487', FORMAT(ROW_NUMBER() OVER (ORDER BY [Primary_Key]), '000')) AS [Primary_Key],
        [Col1],
        [Col2]
    FROM [dbo].[Target_Table]
    WHERE [Col1] = 54706
END

代码解释

  • ROW_NUMBER() OVER (ORDER BY [Primary_Key]):按照原表主键的顺序,为筛选出的每一行生成一个从1开始的连续序号,这样原表的第1行对应序号1,第2行对应序号2,以此类推。
  • FORMAT(..., '000'):把序号格式化为三位数字,不足三位的前面补0,比如1变成001,50变成050。
  • CONCAT('50487', ...):把前缀50487和格式化后的序号拼接,生成你需要的新主键。

效果验证

原数据:

Primary_KeyCol1Col2
5040900154706Test1
.........
5040905054706Test2

执行代码后,插入的新数据会是:

Primary_KeyCol1Col2
5048700154706Test1
.........
5048705054706Test2

这样就完美实现了你要的需求,既复制了指定行,又生成了连续递增的新主键。

内容的提问来源于stack exchange,提问作者Tousif Md. Amin Faisal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:41:29