SQL Server:插入到select,其中sortorder等于插入的主键

时间:2017-04-06 02:50:08

标签: sql sql-server

我正在处理类似的查询:

use strict

我要做的是使用INSERT INTO TableA (value1, value2) SELECT Value1, Value2 FROM TableB WHERE TableB.sortOrder = THE ID FOR THE RECORD GETTING INSERTED 中的值插入TableA,其中TableB等于插入记录的ID。我甚至想做什么?或者我是否必须将TableB.sortOrder放入变量并单独选择然后更新?

1 个答案:

答案 0 :(得分:0)

在子查询中增加TableA的最大ID,确保在多个插入争用相同插入的场景中显式填充id:

INSERT INTO TableA (id, value1, value2) 
SELECT sortOrder, Value1, Value2 FROM TableB 
WHERE TableB.sortOrder = (select max(id) + 1 from TableA)

不确定这是一个好的设计决策,当许多插入竞争时,可能存在潜在的主键违规。