首頁 > 資料庫 > mysql教程 > 如何檢索 SQL Server 中的最後一個識別值?

如何檢索 SQL Server 中的最後一個識別值?

Barbara Streisand
發布: 2024-12-29 17:48:14
原創
700 人瀏覽過

How to Retrieve the Last Identity Value in SQL Server?

檢索最後標識值的替代方法:綜合指南

在資料庫編程中,在插入操作後檢索主鍵標識欄位的值至關重要。本文研究了用於此目的的各種方法,並深入了解了它們的功能和對不同場景的適用性。

@@IDENTITY

@@IDENTITY 擷取目前會話中產生的最後一個身分值,無論與身分關聯的資料表的名稱。

declare @t table (
    id int identity primary key,
    somecol datetime default getdate()
)
insert into @t default values

select @@IDENTITY --returns 1
登入後複製

@@IDENTITY 的缺點是它不受範圍限制。因此,它可以傳回會話中任何語句產生的最後一個身分值,包括目前事務之外的語句。

SCOPE_IDENTITY()

SCOPE_IDENTITY() 擷取會話中產生的最後一個身分值。目前範圍,僅限於產生它的語句和事務。

select SCOPE_IDENTITY() --returns 1
登入後複製

SCOPE_IDENTITY() 是一個更與 @@IDENTITY 相比,它是精確的方法,因為它確保傳回的識別值特定於當前範圍。

OUTPUT

將 OUTPUT 子句與 insert 語句結合使用,可以傳回包含下列內容的資料表:插入的行,包括產生的識別值。

Create Table #Testing (  
    id int identity,  
    somedate datetime default getdate()  
)  
insert into #Testing  
output inserted.*  
default values
登入後複製

OUTPUT 提供了一種在單一交易中一次檢索多個識別值的便捷方法。但是,它特定於目標表,需要額外的表創建和清理操作。

結論

檢索最後一個標識值的方法的選擇取決於應用程式的特定要求。

  • @@IDENTITY 適合需要會話中任何插入行的識別值的場景,無論表。
  • 當身分值應特定於目前範圍時,SCOPE_IDENTITY() 更合適,以確保事務的準確性。
  • OUTPUT 可用於在受控交易中有效檢索多個身分值.

以上是如何檢索 SQL Server 中的最後一個識別值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板