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

MySQL-এ অটো-ইনক্রিমেন্ট ভ্যালু কমিয়ে আনার পদ্ধতি

InnoDB ইঞ্জিন ব্যবহার করলে অটো-ইনক্রিমেন্ট ভ্যালু কমিয়ে আনা যায় না। MyISAM ইঞ্জিনে এটি সম্ভব।

অফিসিয়াল ডকুমেন্ট অনুযায়ী:

You cannot reset the counter to a value less than or equal to any that have already been used. For MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum plus one. For InnoDB, if the value is less than the current maximum value in the column, no error occurs and the current sequence value is not changed.

MyISAM-এ কিছু ID ডিলিট করলে, নতুন অটো-ইনক্রিমেন্ট থাকা ID-এর পরবর্তী মান থেকে শুরু হয়।

MyISAM ইঞ্জিনে টেবিল তৈরি করা

mysql> create table DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE='MyISAM'; Query OK, 0 rows affected (0.23 sec)

রেকর্ড ইনসার্ট করা

mysql> insert into DemoTable values(); Query OK, 1 row affected (0.04 sec)
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.02 sec)
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.08 sec)

রেকর্ড প্রদর্শন

mysql> select * from DemoTable;

আউটপুট: ID ১ থেকে ৬ পর্যন্ত।

ID ৪, ৫, ৬ ডিলিট করা

mysql> delete from DemoTable where Id=4 or Id=5 or Id=6; Query OK, 3 rows affected (0.06 sec)

আবার রেকর্ড দেখানো

mysql> select * from DemoTable;

আউটপুট: ID ১, ২, ৩ অবশিষ্ট।

নতুন অটো-ইনক্রিমেন্ট ৪ সেট করা

mysql> alter table DemoTable auto_increment=4; Query OK, 3 rows affected (0.38 sec) Records: 3 Duplicates: 0 Warnings: 0

কারণ: MyISAM-এ বর্তমান ম্যাক্সিমাম ID ৩, তাই ৩+১=৪ হয়ে যাবে।

নতুন রেকর্ড ইনসার্ট করা

mysql> insert into DemoTable values(); Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.02 sec)

ফাইনাল আউটপুট

+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | +----+ 6 rows in set (0.00 sec)

সতর্কতা: প্রোডাকশনে InnoDB স্ট্যান্ডার্ড। MyISAM ব্যবহার করলে ট্রানজ্যাকশন ও ফরেন কি সাপোর্ট নেই।

  1. MySQL-এ SOUNDEX() ফাংশন ব্যবহার করে ধ্বনিসাম্য খুঁজে বের করা

  2. MySQL-এ IFNULL() ফাংশন দিয়ে NULL মানকে ০ দিয়ে প্রতিস্থাপন করা

  3. MySQL-এ দুটি টেবিলের মধ্যে অনুপস্থিত ভ্যালু খুঁজে বের করা

  4. MySQL-এ অটো-ইনক্রিমেন্ট মান ১ থেকে শুরু করার পদ্ধতি