स्टोर्ड प्रोसीजर का उपयोग करें
एक पंक्ति डालने और तुरंत उसकी सामग्री प्राप्त करने के लिए, एक स्टोर्ड प्रोसीजर बनाएं जो INSERT करता है और फिर LAST_INSERT_ID() का उपयोग करके डाली गई पंक्ति को चुनता है।
टेबल बनाना
mysql> CREATE TABLE InsertRecord_SelectTable (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20),
PRIMARY KEY(Id)
);
स्टोर्ड प्रोसीजर बनाना
mysql> DELIMITER //
mysql> CREATE PROCEDURE Insert_select (
IN tempName VARCHAR(40)
)
BEGIN
DECLARE tempId INT UNSIGNED;
INSERT INTO InsertRecord_SelectTable(Name) VALUES (tempName);
SET tempId = LAST_INSERT_ID();
SELECT * FROM InsertRecord_SelectTable WHERE Id = tempId;
END //
mysql> DELIMITER ;
प्रोसीजर कॉल करना
CALL Insert_select('John');
आउटपुट
+----+------+ | Id | Name | +----+------+ | 1 | John | +----+------+ 1 row in set (0.12 sec)
व्याख्या
IN tempName VARCHAR(40)— इनपुट पैरामीटर।DECLARE tempId INT UNSIGNED— स्थानीय वेरिएबल ID संग्रहीत करने के लिए।INSERT ... VALUES (tempName)— रिकॉर्ड डालता है।SET tempId = LAST_INSERT_ID()— नवीनतम ऑटो-इन्क्रीमेंट ID प्राप्त करता है।SELECT * ... WHERE Id = tempId— डाली गई पूरी पंक्ति लौटाता है।
लाभ
- एटॉमिक ऑपरेशन: डालना और पढ़ना एक ही कॉल में।
- रेस कंडीशन से सुरक्षित:
LAST_INSERT_ID()कनेक्शन-विशिष्ट है। - एप्लिकेशन कोड सरल होता है: केवल
CALLकरें।
नोट
यदि आप केवल ID चाहते हैं, तो SELECT LAST_INSERT_ID() पर्याप्त है। पूरी पंक्ति के लिए उपरोक्त पैटर्न का उपयोग करें।