यूजर-डिफाइंड वेरिएबल के साथ UPDATE
MySQL में सेशन वेरिएबल (@variable) सेट करके उसका उपयोग UPDATE स्टेटमेंट में कॉलम वैल्यू बढ़ाने/घटाने के लिए कर सकते हैं।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable1349 (
ProductId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ProductPrice INT
);
INSERT INTO DemoTable1349(ProductPrice) VALUES(7644);
INSERT INTO DemoTable1349(ProductPrice) VALUES(90843);
INSERT INTO DemoTable1349(ProductPrice) VALUES(9083);
INSERT INTO DemoTable1349(ProductPrice) VALUES(10000);
मौजूदा डेटा
+-----------+--------------+ | ProductId | ProductPrice | +-----------+--------------+ | 1 | 7644 | | 2 | 90843 | | 3 | 9083 | | 4 | 10000 | +-----------+--------------+
क्वेरी: वेरिएबल सेट करके अपडेट करना
SET @AppendValue := 500; UPDATE DemoTable1349 SET ProductPrice = ProductPrice + @AppendValue WHERE ProductId = 4;
Query OK, 1 row affected (0.13 sec) Rows matched: 1 Changed: 1 Warnings: 0
अपडेट के बाद डेटा
SELECT * FROM DemoTable1349;
+-----------+--------------+ | ProductId | ProductPrice | +-----------+--------------+ | 1 | 7644 | | 2 | 90843 | | 3 | 9083 | | 4 | 10500 | +-----------+--------------+
महत्वपूर्ण बिंदु
@AppendValueसेशन-स्कोप्ड वेरिएबल है (कनेक्शन खुला रहने तक वैध):=असाइनमेंट ऑपरेटर है (SET में=भी काम करता है)- वेरिएबल नाम केस-इनसेंसिटिव हैं
- एक ही क्वेरी में सेट और उपयोग:
UPDATE ... SET col = col + (@val := 500)
एकाधिक रो अपडेट करना
SET @Increment := 100; UPDATE DemoTable1349 SET ProductPrice = ProductPrice + @Increment WHERE ProductPrice < 10000;
वेरिएबल देखना
SELECT @AppendValue; -- 500 दिखाएगा
सावधानी
एक ही स्टेटमेंट में वेरिएबल असाइन और रीड करने का व्यवहार MySQL वर्जन पर निर्भर कर सकता है। अलग स्टेटमेंट्स में करना सुरक्षित है।