2

在 SQL Server 中,我使用批量更新将多条记录插入表中。如何取回批量更新后创建的 ID(唯一主键)?

如果我插入一条记录,我可以使用IDENT(tableName). 如果我进行批量更新,我不确定如何获得。请帮忙。

例如,我有学生表,有 ROLE NO 和 NAME。ROLE NO 会自动加 1,只要我使用 java 程序将名称插入 DB。我将使用我的 java 代码中的批量更新一次添加 3 行。在 DB 中,它添加了 ROLE NO 2、3 和 4。如何在我的 java 程序中获取这些新生成的 ID,请帮助

在执行批处理后,我尝试使用 getgeneratedkeys 方法获取 ID。我得到例外。是否支持批量更新 + 获取生成的密钥。?

4

2 回答 2

3

在 SQL Server 中,当您进行插入时,您的查询有一个额外的选项;OUTPUT. 这将让您捕获您插入到表中的数据 - 包括您的 id。您必须将它们插入到临时表中;所以像这样的东西(你的表/列名会让你到达那里。

declare @MyNewRoles Table (Name, RoleNo)

insert into tblMyTable
(Name)
Select
    Name
Output
    inserted.Name, Inserted.RoleNo
    into @MyNewRoles
From tblMyTableOfNames

select * from @MyNewRoles
于 2014-05-29T05:36:46.150 回答
1

如果您不介意向表中添加字段,则可以为每个批处理事务生成一个唯一 ID(例如,随机 UUID),并将其也存储在表中。然后,要找到与给定交易关联的 ID,您只需要类似

select my_id from my_table where batch_id = ?
于 2014-05-29T05:43:26.650 回答