取得當前會話中的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,....)

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章