在插入后检索主键标识字段值时,开发人员经常使用各种方法。本文深入探讨了 @@IDENTITY、SCOPE_IDENTITY() 和 OUTPUT 方法的差异和适用性。
@@IDENTITY返回为任何表生成的最后一个 IDENTITY 值,无论范围如何。它不是范围安全的,这意味着它可能会从当前会话中触发的插入或其他语句返回身份。
SCOPE_IDENTITY() 行为类似,但它将返回值限制为当前语句以及连接范围。因此,它只检索执行语句期间生成的标识。
INSERT 语句中的 OUTPUT 子句返回一个表,其中包含插入到表中的数据。这包括生成的 IDENTITY 值:
INSERT INTO #Testing (ID, somedate) OUTPUT INSERTED.* DEFAULT VALUES;
适当的方法取决于具体要求:
OUTPUT 方法不是明确的范围安全的。它检索当前范围内生成的身份,但如果这些身份已分配给其他表,它也可能返回它们。为了严格的范围安全,请使用 SCOPE_IDENTITY()。
以上是如何在 @@IDENTITY、SCOPE_IDENTITY() 和 OUTPUT 之间进行选择以检索主键标识值?的详细内容。更多信息请关注PHP中文网其他相关文章!