কম্পিউটার টিউটোরিয়াল

MySQL-এ অন্য টেবিলের MAX মান ব্যবহার করে AUTO_INCREMENT রিসেট করা

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)
  1. MySQL-এ INSERT INTO SELECT ব্যবহার করে এক টেবিল থেকে অন্য টেবিলে রো কপি করা

  2. MySQL-এ INSERT INTO SELECT ব্যবহার করে অন্য টেবিল থেকে স্ট্রিং মান নিয়ে রো যোগ করা

  3. MySQL-এ INSERT INTO SELECT ব্যবহার করে অন্য টেবিল থেকে ডেটা কপি করা

  4. MySQL-এ JOIN ব্যবহার করে অন্য টেবিল থেকে ID দিয়ে Username বের করা