經常會有這樣的操作:
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,....)