SQL插入語句插入自增的主鍵后,如何獲取這個新增的主鍵值


這是我遇到的一個面試題,看了一些文章后, 總結如下

SQL Server中,需要返回你剛剛插入到一張表的identity(自增字段)的值, 有3個關鍵字,分別是

@@IDENTITY

SCOPE_IDENTITY

IDENT_CURRENT  

這3者之間有什么樣的區別呢,我們來看看

IDENT_CURRENT => 它針對的是特定的表,所以它的使用方式為 IDENT_CURRENT('Table Name'), 比如Person這張表,它的使用方式就是IDENT_CURRENT('Person'), 它會取出最后一次插入Person表的自增的值.  

@@IDENTITY => 它返回當前會話中,所有作用域的任何表中,最后一個插入的自增標識值

SCOPE_IDENTITY => 它返回當前會話中,當前作用域中的任何表中,最后一個插入的自增標識值

我們來看看這兩者的區別:  假如有2張關聯表Person和Account, PersonId 和 AccountId分別是自增字段.

在Person表中定義了一個INSERT的觸發器, 當在Person表中插入一行時,觸發器被激發,同時需要在Account表中插入一行

這整個是1個會話,但上面涉及到了2個作用域: 第1個作用域是 在Person表中插入1行       第2個作用域是在Account表中插入1行

這樣,上面2個返回的值就不一樣了 

@@IDENTITY  => 返回當前會話,所有作用域中的任何表中,最后一個插入的自增標識值 => AccountId

SCOPEN_IDENTITY => 它返回當前會話中,當前作用域的任何表中,最后一個插入的自增標識值 => PersonId

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM