परिचय
MySQL में मौजूदा पंक्तियों के ID मानों को एक साथ शिफ्ट (बढ़ाना/घटाना) करने के लिए सरल अंकगणित के साथ UPDATE स्टेटमेंट का उपयोग किया जा सकता है।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20)
-> );
Query OK, 0 rows affected (1.07 sec)
mysql> INSERT INTO DemoTable(StudentName) VALUES('Chris');
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable(StudentName) VALUES('Robert');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable(StudentName) VALUES('David');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable(StudentName) VALUES('Mike');
Query OK, 1 row affected (0.10 sec)
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1 | Chris |
| 2 | Robert |
| 3 | David |
| 4 | Mike |
+-----------+-------------+
4 rows in set (0.00 sec)
ID मान 1000 से बढ़ाने की क्वेरी
mysql> UPDATE DemoTable SET StudentId = StudentId + 1000;
Query OK, 4 rows affected (0.18 sec)
Rows matched: 4 Changed: 4 Warnings: 0
अपडेट के बाद रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1001 | Chris |
| 1002 | Robert |
| 1003 | David |
| 1004 | Mike |
+-----------+-------------+
4 rows in set (0.00 sec)
महत्वपूर्ण विचार
- प्राथमिक कुंजी: यदि कॉलम PRIMARY KEY है, तो डुप्लिकेट न बनें (यहां +1000 सुरक्षित है)
- विदेशी कुंजी: संदर्भित टेबल्स भी अपडेट करनी होंगी (ON UPDATE CASCADE मदद कर सकता है)
- ऑटो-इन्क्रीमेंट: अगला AUTO_INCREMENT मान प्रभावित नहीं होता (अभी भी 5 होगा)
- लेनदेन: उत्पादन में ट्रांजैक्शन में लपेटें
अन्य शिफ्ट ऑपरेशन
-- 100 घटाएं
UPDATE DemoTable SET StudentId = StudentId - 100;
-- 10 से गुणा करें (गैप बनाने के लिए)
UPDATE DemoTable SET StudentId = StudentId * 10;
-- पुनः क्रमांक (1,2,3...) - सावधानी से!
SET @n = 0;
UPDATE DemoTable SET StudentId = (@n := @n + 1) ORDER BY StudentId;
चेतावनी
प्राथमिक कुंजी अपडेट करना जोखिम भरा है। विदेशी कुंजी संबंधों, ट्रिगर्स, एप्लिकेशन कैश पर प्रभाव पड़ सकता है। केवल आवश्यक होने पर और पूर्ण बैकअप/टेस्टिंग के बाद करें।