為具有自動遞增列的資料表新增一行通常需要檢索新產生的 ID。 SQL Server 提供了多種方法來實現此目的,每種方法都有自己的優點和缺點。 了解這些差異是選擇適合您情況的最佳方法的關鍵。
@@IDENTITY
函數傳回目前資料庫工作階段中所有資料表中最近產生的識別值。 這很方便,但如果在同一會話中發生多次插入,則可能不可靠,可能會導致不正確的結果。
SCOPE_IDENTITY()
更精確。它會傳回目前會話和範圍(例如,在預存程序或批次)內產生的最後一個識別值。這使得它通常成為最安全和最推薦的選擇。
IDENT_CURRENT('tableName')
直接針對特定表。它會檢索為該表產生的最後一個標識值,無論會話或範圍如何。 這對於檢查分配給表的最後一個 ID 很有幫助,即使最近沒有插入。
INSERT
語句與 OUTPUT
子句結合使用時,提供了強大、直接的方法。 它允許您捕獲語句插入的所有行,包括標識值。 這種方法的範圍僅限於聲明本身,避免了潛在的歧義。 請注意,這通常涉及插入臨時表或表變量,這會增加一點複雜性。
SCOPE_IDENTITY()
是取得新產生的身份值的首選方法。 其範圍特定的性質確保了準確性。 @@IDENTITY
。 IDENT_CURRENT('tableName')
對於檢索特定表的最後一個標識值非常有用,無論會話或範圍如何。 INSERT ... OUTPUT
方法提供了效率和範圍控制,但需要額外的設定。 考慮一下它相對於增加的複雜性的好處。 以上是如何在 SQL Server 中擷取插入行的識別值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!