आप किसी अन्य टेबल से MAX मान का उपयोग करके MySQL ऑटो इन्क्रीमेंट को रीसेट करने के लिए प्रिपेयर्ड स्टेटमेंट का उपयोग कर सकते हैं।
निम्नलिखित सिंटैक्स है:
SET @anyVariableName1 = (SELECT MAX(yourColumnName) FROM yourTableName1);
SET @anyVariableName2 = CONCAT('ALTER TABLE yourTableName2 AUTO_INCREMENT=', @anyVariableName1);
PREPARE yourStatementName FROM @anyVariableName2;
EXECUTE yourStatementName;
उपरोक्त सिंटैक्स किसी अन्य टेबल से अधिकतम मान का उपयोग करके MySQL ऑटो_इन्क्रीमेंट को रीसेट करेगा। उपरोक्त सिंटैक्स को समझने के लिए, दो टेबल बनाते हैं। पहली टेबल में रिकॉर्ड होंगे और दूसरी टेबल पहली टेबल से अधिकतम मान का उपयोग करेगी और ऑटो_इन्क्रीमेंट प्रॉपर्टी के लिए उपयोग करेगी।
टेबल बनाने का क्वेरी:
mysql> CREATE TABLE FirstTableMaxValue (
-> MaxNumber INT
-> ); Query OK, 0 rows affected (0.64 sec)
INSERT कमांड का उपयोग करके टेबल से रिकॉर्ड डालें:
mysql> INSERT INTO FirstTableMaxValue VALUES(100); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO FirstTableMaxValue VALUES(1000); Query OK, 1 row affected (0.19 sec) mysql> INSERT INTO FirstTableMaxValue VALUES(2000); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO FirstTableMaxValue VALUES(90); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO FirstTableMaxValue VALUES(2500); Query OK, 1 row affected (0.17 sec) mysql> INSERT INTO FirstTableMaxValue VALUES(2300); Query OK, 1 row affected (0.12 sec)
SELECT स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें।
क्वेरी इस प्रकार है:
mysql> SELECT * FROM FirstTableMaxValue;
आउटपुट
+-----------+ | MaxNumber | +-----------+ | 100 | | 1000 | | 2000 | | 90 | | 2500 | | 2300 | +-----------+ 6 rows in set (0.05 sec)
अब आप दूसरी टेबल बना सकते हैं। दूसरी टेबल बनाने का क्वेरी:
mysql> CREATE TABLE AutoIncrementWithMaxValueFromTable (
-> ProductId INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY(ProductId)
-> ); Query OK, 0 rows affected (1.01 sec)
यहाँ मैं एक स्टेटमेंट शामिल करने जा रहा हूं जो पहली टेबल से अधिकतम मान प्राप्त करेगा और दूसरी टेबल के लिए ऑटो_इन्क्रीमेंट प्रॉपर्टी के लिए अधिकतम मान सेट करेगा। क्वेरी इस प्रकार है:
mysql> SET @v = (SELECT MAX(MaxNumber) FROM FirstTableMaxValue); Query OK, 0 rows affected (0.00 sec)
mysql> SET @Value2 = CONCAT('ALTER TABLE AutoIncrementWithMaxValueFromTable AUTO_INCREMENT=', @v); Query OK, 0 rows affected (0.00 sec)
mysql> PREPARE myStatement FROM @Value2; Query OK, 0 rows affected (0.29 sec) Statement prepared
mysql> EXECUTE myStatement; Query OK, 0 rows affected (0.38 sec) Records: 0 Duplicates: 0 Warnings: 0
अब हमने पहली टेबल से अधिकतम मान जो 2500 है, उसे दूसरी टेबल में जोड़ा है। अब आप टेबल में रिकॉर्ड डाल सकते हैं जो 2500, 2501 से शुरू होता है।
दूसरी टेबल में रिकॉर्ड डालने का क्वेरी:
mysql> INSERT INTO AutoIncrementWithMaxValueFromTable VALUES(); Query OK, 1 row affected (0.24 sec) mysql> INSERT INTO AutoIncrementWithMaxValueFromTable VALUES(); Query OK, 1 row affected (0.10 sec)
SELECT कमांड का उपयोग करके टेबल से सभी रिकॉर्ड चेक करें:
mysql> SELECT * FROM AutoIncrementWithMaxValueFromTable;
आउटपुट
+-----------+ | ProductId | +-----------+ | 2500 | | 2501 | +-----------+ 2 rows in set (0.00 sec)