您的位置:首页 > 运维架构

谈谈@@IDENTITY 和 SCOPE_IDENTITY()的区别

2015-08-04 21:59 169 查看
在ms sql server中一张表有自增长字段,最近插入表中记录的自增长字段可以通过@@IDENTITY或者SCOPE_IDENTITY()取得。

通常情况下@@IDENTITY 和 SCOPE_IDENTITY()可以起到同样的效果,但是也不尽然,他们两者之间还是有区别的。微软的文档上这样描述:
@@IDENTITY
and SCOPE_IDENTITY return the last identity value generated in any
table in the current session. However, SCOPE_IDENTITY returns the value
only within the current scope; @@IDENTITY is not limited to a specific
scope.
也就是说通常情况用SCOPE_IDENTITY()总是可以得到当前范围内最近插入行生成的标示值,而@@IDENTITY则不限于当前范围内。

我之前一直使用SELECT @@IDENTITY来取得最近插入记录的标示值,这在没有使用触发器的情况下是没有问题的,但是保险起见还是使用SCOPE_IDENTITY()更好一些。

转自:http://www.cnblogs.com/yukaizhao/archive/2009/12/29/identity_vs_scope_identity.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: