小编Kor*_*rsG的帖子

在子查询中使用MAX()+ 1插入T-SQL不会增加,替代方案?

我有一个查询,我需要"批量"插入行与没有标识的主键的表.

--TableA
--PK int (Primary key, no-identity)
--CustNo int
INSERT INTO TableA (PK,CustNo)
  SELECT (SELECT MAX(PK)+1 AS PK FROM TableA), CustNo
  FROM Customers
Run Code Online (Sandbox Code Playgroud)

(简化示例 - 请不要评论可能的并发问题:-))

问题是它没有为每个"处理的"行增加PK,并且我得到主键违规.

我知道如何使用游标/ while循环,但我想避免这种情况,并以基于集合的方式解决它,如果这甚至可能的话?

(运行SQL Server 2008 Standard)

t-sql sql-server sql-server-2008 batch-insert

13
推荐指数
2
解决办法
4万
查看次数

标签 统计

batch-insert ×1

sql-server ×1

sql-server-2008 ×1

t-sql ×1