@@IDENTITY 和 SCOPE_IDENTITY()
2009-12-29 22:17
344 查看
在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()更好一些。
通常情况下@@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()更好一些。
相关文章推荐
- @@IDENTITY与SCOPE_IDENTITY()
- A. 将 @@IDENTITY 和 SCOPE_IDENTITY 用于触发器
- SCOPE_IDENTITY、IDENT_CURRENT和@@IDENTITY的比较
- @@identity , SCOPE_IDENTITY,IDENT_CURRENT 三者的异同
- SCOPE_IDENTITY和@@identity的区别 【转】
- MSSql Server 中@@IDENTITY与SCOPE_IDENTITY()
- @@IDENTITY与SCOPE_IDENTITY()
- 糟糕的@@identity,SCOPE_IDENTITY ,IDENT_CURRENT
- @@IDENTITY与SCOPE_IDENTITY()
- [MSSQL]SCOPE_IDENTITY,IDENT_CURRENT以及@@IDENTITY的区别
- SCOPE_IDENTITY、IDENT_CURRENT 和@@IDENTITY的比较
- 转载:SCOPE_IDENTITY、IDENT_CURRENT和@@IDENTITY比较
- @@identity , SCOPE_IDENTITY,IDENT_CURRENT 三者的异同
- SCOPE_IDENTITY()、@@IDENTITY、IDENT_CURRENT()
- @@identity与scope_identity()函数的区别
- @@IDENTITY与SCOPE_IDENTITY()
- 慎用@@IDENTITY,用SCOPE_IDENTITY()代替之
- @@IDENTITY与SCOPE_IDENTITY()
- SCOPE_IDENTITY和@@identity的区别
- SCOPE_IDENTITY和@@identity的区别