SQL सर्वर में, आप T-SQL का उपयोग कर सकते हैं @@IDENTITY
सिस्टम वर्तमान सत्र में अंतिम-सम्मिलित पहचान मान वापस करने के लिए कार्य करता है।
ध्यान दें कि यह किसी भी . में जेनरेट किया गया अंतिम पहचान मान लौटाता है तालिका वर्तमान सत्र में . यह IDENT_CURRENT()
. के विपरीत है फ़ंक्शन, जो अंतिम सम्मिलित पहचान मान किसी तालिका के लिए . देता है ।
SCOPE_IDENTITY()
फ़ंक्शन बहुत हद तक @@IDENTITY
. के समान है इसमें यह वर्तमान सत्र में अंतिम-सम्मिलित पहचान मान भी लौटाता है। अंतर यह है कि SCOPE_IDENTITY()
वर्तमान दायरे तक सीमित है।
उदाहरण 1
यहां @@IDENTITY
. का मूल कोड उदाहरण दिया गया है उपयोग।
SELECT @@IDENTITY AS [Last-Inserted Identity Value];
परिणाम:
+--------------------------------+ | Last-Inserted Identity Value | |--------------------------------| | NULL | +--------------------------------+
इसका कारण NULL
returns है ऐसा इसलिए है क्योंकि मैंने SQL सर्वर के लिए एक नया सत्र खोला है, और मैंने अपने वर्तमान सत्र के दौरान अभी तक एक पहचान कॉलम अपडेट नहीं किया है।
नीचे कुछ कोड दिया गया है जो कुछ पहचान कॉलम अपडेट करता है।
CREATE TABLE Cats(id int IDENTITY); CREATE TABLE Dogs(id int IDENTITY); INSERT Cats DEFAULT VALUES; INSERT Cats DEFAULT VALUES; SELECT @@IDENTITY AS [Last-Inserted Identity Value];
परिणाम:
+--------------------------------+ | Last-Inserted Identity Value | |--------------------------------| | 2 | +--------------------------------+
यहां, मैं कुछ टेबल बनाता हूं, कुछ डेटा सम्मिलित करता हूं, फिर वर्तमान पहचान मान का चयन करता हूं।
वर्तमान पहचान मान 2 है क्योंकि मैंने उस तालिका में दो पंक्तियाँ डाली हैं।
अब एक पंक्ति को दूसरी तालिका में सम्मिलित करते हैं:
INSERT Dogs DEFAULT VALUES; SELECT @@IDENTITY AS [Last-Inserted Identity Value];
परिणाम:
+--------------------------------+ | Last-Inserted Identity Value | |--------------------------------| | 1 | +--------------------------------+
लौटाया गया मान 1 है, क्योंकि यह इस सत्र के लिए आखिरी बार डाला गया पहचान मान है।
उदाहरण 2 - IDENT_CURRENT() की तुलना में
यहां इसकी तुलना IDENT_CURRENT()
. से की गई है ।
SELECT @@IDENTITY AS [@@IDENTITY], IDENT_CURRENT('Cats') AS [IDENT_CURRENT('Cats')], IDENT_CURRENT('Dogs') AS [IDENT_CURRENT('Dogs')];
परिणाम:
+--------------+-------------------------+-------------------------+ | @@IDENTITY | IDENT_CURRENT('Cats') | IDENT_CURRENT('Dogs') | |--------------+-------------------------+-------------------------| | 1 | 2 | 1 | +--------------+-------------------------+-------------------------+
जैसा कि बताया गया है, IDENT_CURRENT()
निर्दिष्ट तालिका के आधार पर अपना परिणाम देता है। इसलिए हम इसका उपयोग प्रत्येक तालिका के लिए अंतिम पहचान मान खोजने के लिए कर सकते हैं।
उदाहरण 3 - एक नए सत्र में स्विच करें
अब अगर मैं एक नया कनेक्शन खोलता हूं और @@IDENTITY
. का चयन करता हूं फिर, यही होता है:
USE Test; SELECT @@IDENTITY AS [@@IDENTITY], IDENT_CURRENT('Cats') AS [IDENT_CURRENT('Cats')], IDENT_CURRENT('Dogs') AS [IDENT_CURRENT('Dogs')];
परिणाम:
+--------------+-------------------------+-------------------------+ | @@IDENTITY | IDENT_CURRENT('Cats') | IDENT_CURRENT('Dogs') | |--------------+-------------------------+-------------------------| | NULL | 2 | 1 | +--------------+-------------------------+-------------------------+
@@IDENTITY
परिणाम शून्य है क्योंकि मैंने नए सत्र में पहचान कॉलम में कुछ भी नहीं डाला है।
IDENT_CURRENT()
परिणाम NULL नहीं हैं, क्योंकि इसका परिणाम तालिका पर आधारित है - सत्र पर नहीं।
@@IDENTITY बनाम SCOPE_IDENTITY() बनाम IDENT_CURRENT()
SQL सर्वर में IDENT_CURRENT बनाम @@ पहचान बनाम SCOPE_IDENTITY देखें:क्या अंतर है? एक साधारण उदाहरण के लिए जो इन तीन कार्यों के बीच के अंतरों से चलता है।