IDENT_CURRENT 类似于 SQL Server 2000 标识函数 SCOPE_IDENTITY 和 @@IDENTITY。 这三个函数都返回最后生成的标识值。 但是,上述每个函数中定义的“最后”的作用域和会话有所不同。
-
IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值。
-
@@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。
-
SCOPE_IDENTITY 返回为当前会话和当前作用域中的某个表生成的最新标识值。
如果 IDENT_CURRENT 值为 NULL(因为表从未包含行或已被截断),IDENT_CURRENT 函数将返回种子值。
如果语句和事务失败,它们会更改表的当前标识,从而使标识列中的值出现不连贯现象。 即使未提交试图向表中插入值的事务,也永远无法回滚标识值。 例如,如果因 IGNORE_DUP_KEY 冲突而导致 INSERT 语句失败,表的当前标识值仍然会增加。
请谨慎使用 IDENT_CURRENT 来预报下一个生成的标识值。 由于其他会话执行的插入,实际生成的值可能与 IDENT_CURRENT 加上 IDENT_INCR 不同