批量插入具有唯一ID列(不是Identity)的SQL表

杰克斯

我编写了一个MERGE用于在表中插入/更新数据的过程,但这是我的问题。ID上表的列,这也是主键列不是一个IDENTITY列。我找到了一种插入数据的方法,但是有可能在我不想要的PK中造成差距。

这是我目前有效的代码。

MERGE Table p 
USING (SELECT i.Col1, 
              i.Col2, 
              i.Col3, 
              (SELECT ISNULL(MAX(ID), 0) FROM Table1 i) +
                  ROW_NUMBER() OVER (ORDER BY ID) ID
      ) a(Col1, Col2, Col3, ID)
ON p.Col1 = a.Col1
WHEN MATCHED THEN UPDATE set p.Col2 = a.Col2, p.Col3 = a.Col3
WHEN NOT MATCHED THEN INSERT (ID, Col1, Col2, Col3)
VALUES (a.ID, a.Col1, a.Col2, a.Col3)

ROW_NUMBER() OVER (ORDER BY ID)会给我唯一的值,但如果在20个记录10被更新,它会在其它嵌在我的ID列上创建的空白。

我试过了

(Select ISNULL(MAX(ID), 0) + 1 from Table)

但显然只有在插入1条记录的情况下,此方法才能正常工作。批量操作不会为每个insert语句执行子查询,这会导致PK违规。

我无法将ID更改为列,identity因为旧版应用程序仍将信息插入该表中,并且如果将其更改为身份列将失败。

有人可以给我另一种执行合并的方法,而不必遍历整个表并分别执行每个更新/插入吗?

安多玛

一种简单的解决方案是分两步合并。在第一步中,更新现有行。在第二步中,插入新行。由于第二步仅插入,因此避免了间隙问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在具有唯一一列的表中插入唯一的表?

来自分类Dev

如果user_id在表中是唯一的,则插入记录;如果不是,则插入更新列

来自分类Dev

使用Anorm批量插入具有很多列的表

来自分类Dev

具有目标表标识列的批量插入

来自分类Dev

如何为每个表插入具有唯一ID的div

来自分类Dev

Laravel Eloquent-在表中插入多条记录(具有唯一约束的列)

来自分类Dev

如何对一个具有两个独立表中的行的表执行批量SQL插入

来自分类Dev

唯一值约束,表中具有多个列,而不是Oracle中的组合

来自分类Dev

插入具有从属列的唯一列

来自分类Dev

具有主键ID的批量插入

来自分类Dev

具有主键ID的批量插入

来自分类Dev

插入具有唯一值的多行-SQL

来自分类Dev

SQL:在具有非唯一特征ID的两个表之间查找差异?

来自分类Dev

列ID不是唯一的

来自分类Dev

在具有ID-Ref列SQL的表中选择Name而不是OF ID

来自分类Dev

与SQL Server批量插入,其中一列具有多个值,而其他所有列均具有预设值

来自分类Dev

更新列,具有辅助ID的非唯一ID?

来自分类Dev

更新列,具有辅助ID的非唯一ID?

来自分类Dev

比较具有多个列且具有唯一ID的两个数据表

来自分类Dev

SQL Server:将行复制并插入到同一表中,但具有不同的ID

来自分类Dev

SQL Server:将行复制并插入到同一表中,但具有不同的ID

来自分类Dev

具有表的唯一单元格的SQL算法

来自分类Dev

在SQL中处理具有多个输入源的表上的批量插入

来自分类Dev

插入具有唯一ID的记录时,无法在触发器上执行多行插入

来自分类Dev

仅具有一列(主键)的SQL表中选择/插入的时间复杂度

来自分类Dev

SQL Server-查找数据库中具有唯一ID值的所有表

来自分类Dev

从SQL表的多个列生成唯一的整数ID

来自分类Dev

具有唯一值的列的SQL总和金额

来自分类Dev

SQL:如何更新具有唯一值的列

Related 相关文章

  1. 1

    如何在具有唯一一列的表中插入唯一的表?

  2. 2

    如果user_id在表中是唯一的,则插入记录;如果不是,则插入更新列

  3. 3

    使用Anorm批量插入具有很多列的表

  4. 4

    具有目标表标识列的批量插入

  5. 5

    如何为每个表插入具有唯一ID的div

  6. 6

    Laravel Eloquent-在表中插入多条记录(具有唯一约束的列)

  7. 7

    如何对一个具有两个独立表中的行的表执行批量SQL插入

  8. 8

    唯一值约束,表中具有多个列,而不是Oracle中的组合

  9. 9

    插入具有从属列的唯一列

  10. 10

    具有主键ID的批量插入

  11. 11

    具有主键ID的批量插入

  12. 12

    插入具有唯一值的多行-SQL

  13. 13

    SQL:在具有非唯一特征ID的两个表之间查找差异?

  14. 14

    列ID不是唯一的

  15. 15

    在具有ID-Ref列SQL的表中选择Name而不是OF ID

  16. 16

    与SQL Server批量插入,其中一列具有多个值,而其他所有列均具有预设值

  17. 17

    更新列,具有辅助ID的非唯一ID?

  18. 18

    更新列,具有辅助ID的非唯一ID?

  19. 19

    比较具有多个列且具有唯一ID的两个数据表

  20. 20

    SQL Server:将行复制并插入到同一表中,但具有不同的ID

  21. 21

    SQL Server:将行复制并插入到同一表中,但具有不同的ID

  22. 22

    具有表的唯一单元格的SQL算法

  23. 23

    在SQL中处理具有多个输入源的表上的批量插入

  24. 24

    插入具有唯一ID的记录时,无法在触发器上执行多行插入

  25. 25

    仅具有一列(主键)的SQL表中选择/插入的时间复杂度

  26. 26

    SQL Server-查找数据库中具有唯一ID值的所有表

  27. 27

    从SQL表的多个列生成唯一的整数ID

  28. 28

    具有唯一值的列的SQL总和金额

  29. 29

    SQL:如何更新具有唯一值的列

热门标签

归档