MySQL-এ অন্য টেবিলের MAX মান ব্যবহার করে AUTO_INCREMENT রিসেট করতে প্রিপেয়ার্ড স্টেটমেন্ট ব্যবহার করতে পারেন।
সিনট্যাক্স:
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)
ইনসার্ট কমান্ড দিয়ে রেকর্ড ইনসার্ট করি:
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)
সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখি:
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
এখন প্রথম টেবিল থেকে সর্বোচ্চ মান ২৫০০ দ্বিতীয় টেবিলে যোগ হয়েছে। এখন দ্বিতীয় টেবিলে রেকর্ড ইনসার্ট করলে সেটি ২৫০০, ২৫০১ ইত্যাদি থেকে শুরু হবে।
দ্বিতীয় টেবিলে রেকর্ড ইনসার্ট করার ক্যোয়ারি:
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)
সিলেক্ট কমান্ড দিয়ে টেবিলের সব রেকর্ড চেক করি:
mysql> SELECT * FROM AutoIncrementWithMaxValueFromTable;
আউটপুট
+-----------+ | ProductId | +-----------+ | 2500 | | 2501 | +-----------+ 2 rows in set (0.00 sec)