首頁 > 資料庫 > mysql教程 > 如何在 @@IDENTITY、SCOPE_IDENTITY() 和 OUTPUT 之間進行選擇以擷取主鍵標識值?

如何在 @@IDENTITY、SCOPE_IDENTITY() 和 OUTPUT 之間進行選擇以擷取主鍵標識值?

Mary-Kate Olsen
發布: 2025-01-03 04:12:38
原創
438 人瀏覽過

How to Choose Between @@IDENTITY, SCOPE_IDENTITY(), and OUTPUT for Retrieving Primary Key Identity Values?

擷取最後一個識別:@@IDENTITY、SCOPE_IDENTITY()、OUTPUT 等

插入後擷取主鍵識別欄位值時,開發人員常使用各種方法。本文深入探討了 @@IDENTITY、SCOPE_IDENTITY() 和 OUTPUT 方法的差異和適用性。

@@IDENTITY 與 SCOPE_IDENTITY()

@@IDENTITY傳回為任何資料表產生的最後一個 IDENTITY 值,無論範圍為何。它不是範圍安全的,這意味著它可能會從當前會話中觸發的插入或其他語句傳回身分。

SCOPE_IDENTITY() 行為類似,但它將返回值限制為當前語句以及連接範圍。因此,它只檢索執行語句期間產生的標識。

OUTPUT 方法

INSERT 語句中的 OUTPUT 子句傳回一個資料表,其中包含插入到表中的資料。這包括產生的IDENTITY 值:

INSERT INTO #Testing (ID, somedate)
OUTPUT INSERTED.*
DEFAULT VALUES;
登入後複製

方法選擇

適當的方法取決於特定要求:

  • @@IDENTITY:適用於擷取目前範圍內所有資料表中最後產生的識別session.
  • SCOPE_IDENTITY():僅在需要目前語句和作用域中的識別時有用。
  • OUTPUT:不僅適合檢索身分以及其他插入的值。

範圍安全

OUTPUT 方法不是明確的範圍安全的。它會檢索目前範圍內產生的身份,但如果這些身份已指派給其他表,它也可能會傳回它們。為了嚴格的範圍安全,請使用 SCOPE_IDENTITY()。

附加說明

  • IDENT_CURRENT(table):傳回為特定資料表產生的最新識別值,無論連線或範圍為何。然而,它主要用於遺留程式碼。

以上是如何在 @@IDENTITY、SCOPE_IDENTITY() 和 OUTPUT 之間進行選擇以擷取主鍵標識值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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