向具有自动递增列的表添加一行通常需要检索新生成的 ID。 SQL Server 提供了多种方法来实现此目的,每种方法都有自己的优点和缺点。 了解这些差异是选择适合您情况的最佳方法的关键。
@@IDENTITY
函数返回当前数据库会话中所有表中最近生成的标识值。 这很方便,但如果在同一个会话中发生多次插入,则可能不可靠,可能会导致不正确的结果。
SCOPE_IDENTITY()
更精确。它返回当前会话和范围(例如,在存储过程或批处理中)内生成的最后一个标识值。这使得它通常成为最安全和最推荐的选择。
IDENT_CURRENT('tableName')
直接针对特定表。它检索为该表生成的最后一个标识值,无论会话或范围如何。 这对于检查分配给表的最后一个 ID 很有帮助,即使最近没有插入。
INSERT
语句与 OUTPUT
子句结合使用时,提供了一种强大、直接的方法。 它允许您捕获语句插入的所有行,包括标识值。 这种方法的范围仅限于声明本身,避免了潜在的歧义。 请注意,这通常涉及插入临时表或表变量,这会增加一点复杂性。
SCOPE_IDENTITY()
是获取新生成的身份值的首选方法。 其范围特定的性质确保了准确性。@@IDENTITY
。IDENT_CURRENT('tableName')
对于检索特定表的最后一个标识值非常有用,无论会话或范围如何。INSERT ... OUTPUT
方法提供了效率和范围控制,但需要额外的设置。 考虑一下它相对于增加的复杂性的好处。以上是如何在 SQL Server 中检索插入行的标识值?的详细内容。更多信息请关注PHP中文网其他相关文章!