在資料庫編程中,在插入操作後檢索主鍵標識欄位的值至關重要。本文研究了用於此目的的各種方法,並深入了解了它們的功能和對不同場景的適用性。
@@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() 擷取會話中產生的最後一個身分值。目前範圍,僅限於產生它的語句和事務。
select SCOPE_IDENTITY() --returns 1
SCOPE_IDENTITY() 是一個更與 @@IDENTITY 相比,它是精確的方法,因為它確保傳回的識別值特定於當前範圍。
將 OUTPUT 子句與 insert 語句結合使用,可以傳回包含下列內容的資料表:插入的行,包括產生的識別值。
Create Table #Testing ( id int identity, somedate datetime default getdate() ) insert into #Testing output inserted.* default values
OUTPUT 提供了一種在單一交易中一次檢索多個識別值的便捷方法。但是,它特定於目標表,需要額外的表創建和清理操作。
檢索最後一個標識值的方法的選擇取決於應用程式的特定要求。
以上是如何檢索 SQL Server 中的最後一個識別值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!