@@identity से वर्तमान सत्र का अंतिम AUTO_INCREMENT मान प्राप्त करना
@@identity सिस्टम वेरिएबल वर्तमान कनेक्शन/सत्र में AUTO_INCREMENT कॉलम में डाला गया अंतिम मान लौटाता है। यह LAST_INSERT_ID() के समान है लेकिन सत्र-विशिष्ट है।
टेबल और डेटा
mysql> CREATE TABLE DemoTable(
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(100)
);
Query OK, 0 rows affected (0.67 sec)
mysql> INSERT INTO DemoTable(UserName) VALUES('David');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable(UserName) VALUES('Mike');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable(UserName) VALUES('Carol');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable(UserName) VALUES('Robert');
Query OK, 1 row affected (0.24 sec)
mysql> INSERT INTO DemoTable(UserName) VALUES('John');
Query OK, 1 row affected (0.13 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | David | | 2 | Mike | | 3 | Carol | | 4 | Robert | | 5 | John | +--------+----------+ 5 rows in set (0.00 sec)
@@identity का उपयोग
mysql> SELECT @@identity;
परिणाम:
+------------+ | @@identity | +------------+ | 5 | +------------+ 1 row in set (0.00 sec)
महत्वपूर्ण अंतर: @@identity वर्तमान सत्र का अंतिम मान देता है। LAST_INSERT_ID() भी समान है लेकिन स्टेटमेंट-स्तर पर सुरक्षित है (ट्रिगर द्वारा डाले गए मान से प्रभावित नहीं होता)। अधिकांश मामलों में LAST_INSERT_ID() प्राथमिकता दी जाती है।