@@IDENTITY 的缺点 SCOPE_IDENTITY() 取而代之

news/2024/7/23 11:26:57

 也许大家对SQL Server中的 @@IDENTITY 都不陌生,都知道它是获取数据表中最后一条插入数据的IDENTITY值。
 比如,表 A 中有个 ID 为自增1的字段,假设此时 ID 的值为100,现在如果我往表A插入一条数据,并在插入后 
 SELECT @@IDENTITY,则其返回 101,最后一条IDENTITY域(即ID域)的值。
 
 现在问题来了,为什么说要慎用@@IDENTITY呢?原因是 @@IDENTITY 它总是获取最后一条变更数据的自增字段的值,
 而忽略了进行变更操作所在的范围约束。比如,我有表 A 和表 B 两个表,现在我在表 A 上定义了一个Insert触发器,
 当在表 A 中插入一条数据时,自动在表 B 也插入一条数据。此时,大家注意,有两个原子操作:在A中插入一条数据, 接着在B中随后插入一条数据。
 
 现在我们想下,假设上面表 A 和表 B 都有IDENTITY自增域,那么我们在表 A 插入一条数据后,使用了 
 SELECT @@IDENTITY 输出时,输出的到底是 A 还是 B 的自增域的值呢?  答案很明显,是谁最后插入就输出谁,
 那么就是 B 了。于是,我本意是想得到 A 的自增域值,结果得到了 B 的自增域值,一只 BUG 随之诞生,搞不好还
 会影响到整个系统数据的混乱。
 
 因此,对于这种情况,建议大家慎用 @@IDENTITY,而尽量采用 SCOPE_IDENTITY() 函数替换之。SCOPE_IDENTITY() 
 也是得到最后一条自增域的值,但是它是仅限在一个操作范围之内,而不像 @@IDENTITY 是取全局操作的最后一步操作
 所产生的自增域的值的。
 


http://www.niftyadmin.cn/n/4235162.html

相关文章

sql写多了,都怀疑了

left join 也是关联,只是会有空,只要关联了就是一条记录,当然可以过滤,可以查、可以过滤。 or 关联后,就形成临时表,对此临时表进行过滤。没毛病

WP7备注(24)(ApplicationBar|MediaElement)

ApplicationBar常规用法: <shell:ApplicationBar IsVisible"False"> <shell:ApplicationBarIconButton IconUri"Images/appbar.transport.pause.rest.png" Text"Pause" IsEnabled"False" Click"OnAppBarPauseClick"…

集群概念介绍

https://blog.csdn.net/lyd135364/article/details/67008645

Oracle更改端口后lsnrctl无法启动

Oracle更改端口后lsnrctl无法启动 最近在研究Oracle 10G&#xff0c;先从安装的时候说起吧&#xff0c;安装的时候&#xff0c;由于默认端口1521已经被其他程序占了&#xff0c;装完oracle后&#xff0c;端口变成了1522。 一、于是把端口改成又改成了1521&#xff0c;当时可以重…

asm字节码操作 方法的动态修改增加

asm 4.0 版本 http://forge.ow2.org/plugins/scmsvn/index.php?group_id23 asm是java的字节码操作框架&#xff0c;可以动态查看类的信息&#xff0c;动态修改&#xff0c;删除&#xff0c;增加类的方法。 下面基于4.0版本的一个使用示例&#xff0c;演示了对类Foo进行修改方法…

【C语言】—— 宏和枚举区别

文章目录 定义方式不同类型检查不同替换时机不同适用场景不同定义范围不同可读性可扩展性可移植性调试和错误处理编译器优化命名空间示例宏定义枚举 总结 C语言中&#xff0c;枚举和宏是两种不同的语法结构&#xff0c;用于定义常量或标识符。它们有以下区别&#xff1a; 枚举是…

left join 终极理解

left join 就是关联&#xff0c;右表多出来不相干 关联不上不要&#xff0c;右边少了以空代替&#xff0c;保证左表全出来&#xff0c;如果右边重复记录&#xff0c;则左表关联上部分也重复。总结就是&#xff0c;左表只会多(重复、因右表重复)不会少&#xff0c;右表关联不上则…

Silverlight应用整合

2019独角兽企业重金招聘Python工程师标准>>> 在企业应用系统中&#xff0c;企业客户不在满足于呆板的Portal、树形结构、数据堆积的表格和满屏的文字描述。企业客户越来越倡导用户体 验&#xff0c;Silverlight迎合了这种需求&#xff0c;实现了炫目的体验和丰富交互…