我有一个查询,我需要将行“批量”插入到具有没有标识的主键的表中。
--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
(简化示例 - 请不要评论可能的并发问题:-))
问题是它不会增加“每个”处理行的 PK,并且我得到主键违规。
我知道如何使用游标/while 循环来做到这一点,但我想避免这种情况,并以基于集合的方式解决它,如果这可能的话?
(运行 SQL Server 2008 标准版)