SQL Server中查找最新插入的行ID[如MySQL中的last_insert_id]

但是,上述每个函数中定义的“最后”的作用域和会话有所不同。

  • IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值。

  • @@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。

  • SCOPE_IDENTITY 返回为当前会话和当前作用域中的某个表生成的最新标识值。

如果 IDENT_CURRENT 值为 NULL(因为表从未包含行或已被截断),IDENT_CURRENT 函数将返回种子值。

例如,如果因 IGNORE_DUP_KEY 冲突而导致 INSERT 语句失败,表的当前标识值仍然会增加。

由于其他会话执行的插入,实际生成的值可能与 IDENT_CURRENT 加上 IDENT_INCR 不同