经过多次研究,我有点困惑,我应该在sql中使用哪个身份跟踪器.
从我所了解的scope_identity将给我从任何表更新的最后一个id,ident_current将从指定的表返回最后一个id.
所以给我的信息在我看来是最好的版本(如果你知道你将要更新哪个表)是ident_current.然而,在阅读之后,似乎大多数人喜欢使用scope_identity.这是什么原因,我的逻辑有缺陷?
解决方法
在这种情况下,您需要编写表名称,如果您决定更改表名称会发生什么?然后,您也不能忘记更新代码以反映出来.我总是使用SCOPE_IDENTITY,除非我需要在触发器中插入的ID,那么我将使用@@ IDENTITY
另外更大的区别是,IDENT_CURRENT会给你从插入的另一个进程的身份(换句话说,从任何用户最后生成的身份值)
所以如果你做一个插入,然后有人做一个插入,然后你做一个SELECT IDENT_CURRENT你将得到该人的身份值
另请参见6 Different Ways To Get The Current Identity Value,它有一些代码说明当您将触发器放在桌面上时会发生什么