取得当前会话中的Identity值 -- SCOPE_IDENTITY()

经常会有这样的操作:

Table1 (ID,Column1)
Table2 (ID,Table1ID,Column1,Column2,Column3...)

Table1与Table2是父子关系,插入到Table1后,需要返回当前的ID号,在插入Table2时使用,如果用

Select Max(ID) From Table1的话,效率很低,并且并发操作时,值会不准确,直到发现了 SCOPE_IDENTITY ,后,这个问题就迎刃而解了。

首先来看一下会话的概念:

会话:  一个用户连接产生的所有上下文信息

两个会话应该是相互独立的,SCOPE_IDENTITY :返回当前会话当前作用域任何表生成的最后一个标识值 。

也就是说,如果产生了两个会话,这两个会话的SCOPE_IDENTITY 是互不干扰的。利用这一特点,可以编写下面的SQL语句来实现上面的操作:

Declare @ID as int
Insert into Table1 Values('111')
Select @ID = Scope_Identity()
Insert into Table2 Values(@ID,....)

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值