插入後擷取主鍵識別欄位值時,開發人員常使用各種方法。本文深入探討了 @@IDENTITY、SCOPE_IDENTITY() 和 OUTPUT 方法的差異和適用性。
@@IDENTITY傳回為任何資料表產生的最後一個 IDENTITY 值,無論範圍為何。它不是範圍安全的,這意味著它可能會從當前會話中觸發的插入或其他語句傳回身分。
SCOPE_IDENTITY() 行為類似,但它將返回值限制為當前語句以及連接範圍。因此,它只檢索執行語句期間產生的標識。
INSERT 語句中的 OUTPUT 子句傳回一個資料表,其中包含插入到表中的資料。這包括產生的IDENTITY 值:
INSERT INTO #Testing (ID, somedate) OUTPUT INSERTED.* DEFAULT VALUES;
適當的方法取決於特定要求:
OUTPUT 方法不是明確的範圍安全的。它會檢索目前範圍內產生的身份,但如果這些身份已指派給其他表,它也可能會傳回它們。為了嚴格的範圍安全,請使用 SCOPE_IDENTITY()。
以上是如何在 @@IDENTITY、SCOPE_IDENTITY() 和 OUTPUT 之間進行選擇以擷取主鍵標識值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!