经过大量的研究后,我对我应该在sql中使用哪个身份跟踪器感到有些困惑.
根据我的理解,scope_identity将为我提供从任何表更新的最后一个id,ident_current将返回指定表中的最后一个id.
所以鉴于这些信息,在我看来,最好使用的版本(如果您知道要更新哪个表)是ident_current.然而,在阅读时,似乎大多数人更喜欢使用scope_identity.这背后的原因是什么,我的逻辑是否存在缺陷?
在这种情况下,您需要编写表名,如果您决定更改表名,会发生什么?您还必须忘记更新代码以反映这一点.除非我需要触发器中插入的ID,否则我总是使用SCOPE_IDENTITY然后我将使用@@ IDENTITY
另外更大的区别是IDENT_CURRENT将从另一个执行插入的进程(换句话说,来自任何用户的最后生成的标识值)中提供身份,因此如果您执行插入操作,然后有人在您执行SELECT IDENT_CURRENT之前执行插入操作会获得其他人的身份价值
另请参阅6种获取当前标识值的不同方法,其中包含一些代码,说明将触发器放在表上时会发生什么