2

我有一个适用于几个 SQL 表的小进程。这些表最初是 Guid 主键,但为了提高效率,我们将它们更新为 BigInt 标识。

我有一个批量插入,它在主键表中添加一个项目,然后在外键表中添加几个项目。使用 Guid,这很容易,因为我会在代码中创建 Guid 并将其传递给参数。

我很好奇身份列的最佳方法是什么?我知道我能做到:

declare @id int 
insert into PrimaryKeyTable (...) Values (...)
select @id = Scope_Identity()

并取回主键。

将批次分成两部分并将参数传回代码中以进行外键插入的最佳方法是什么?或者有没有办法在一个 SQL 语句中完成所有的插入操作?是否有关于此事的一般公众意见或最佳做法?谢谢你的任何指导。

4

1 回答 1

1

您需要使用OUTPUT

INSERT...
OUTPUT INSERTED.ID

这允许您进行批量插入,它将吐出批量身份 ID 以及您明确设置输出的任何其他内容

于 2013-10-15T15:11:38.577 回答