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

MySQL-এ বর্তমান সিকোয়েন্স নম্বর থেকে কম AUTO_INCREMENT মান পরিবর্তন করলে কী ফেরত দেয়?


MySQL কলামে AUTO_INCREMENT ব্যবহার করলে সিকোয়েন্স নম্বর সর্বদা ডিফল্ট মান ১ বা নির্দিষ্ট মান থেকে আরোহী ক্রমে বৃদ্ধি পায়।

এই কারণেই, MySQL AUTO_INCREMENT মানকে বর্তমান সিকোয়েন্স নম্বর থেকে কম মানに変更 করার অনুমতি দেয় না। নিচের উদাহরণটি এটি বোঝাতে সাহায্য করবে −

উদাহরণ

এই উদাহরণে মনে করুন 'emp1' নামে একটি টেবিল আছে এবং টেবিল তৈরি করার সময় AUTO_INCREMENT VALUE ১০০ নির্দিষ্ট করা হয়েছে। অতএব টেবিলে মান ইনসার্ট করার পর সিকোয়েন্স ১০০ থেকে শুরু হবে যা নিচের কোয়ারিটির আউটপুট থেকে দেখা যাচ্ছে −

mysql> Select * from emp1; +-----+---------+ | id  | NAME    | +-----+---------+ | 100 | Sohan   | | 101 | Harshit | +-----+---------+ 2 rows in set (0.00 sec)

এখন ALTER TABLE কোয়ারিটি দিয়ে AUTO_INCREMENT মান ৯০ করতে চাইলে MySQL কোনো এরর বা সতর্কতা দেয় না কারণ কোয়ারিটি টি ঠিক আছে কিন্তু যখন টেবিলে নতুন মান ইনসার্ট করা হবে, MySQL নির্দিষ্ট AUTO_INCREMENT মানকে বর্তমান সিকোয়েন্স নম্বর সাথে তুলনা করবে। যেহেতু নির্দিষ্ট AUTO_INCREMENT মান (৯০) বর্তমান সিকোয়েন্স নম্বর (১০১) থেকে কম, MySQL নতুন মানগুলো ১০২ থেকে শুরু করবে যা নিচের কোয়ারিটিগুলো থেকে পর্যবেক্ষণ করা যাবে −

mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 90; Query OK, 2 rows affected (0.31 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Aryan'); Query OK, 1 row affected (0.08 sec) mysql> Select * from emp1; +-----+---------+ | id  | NAME    | +-----+---------+ | 100 | Sohan   | | 101 | Harshit | | 102 | Aryan   | +-----+---------+ 3 rows in set (0.00 sec)

বিপরীতভাবে, যদি বর্তমান সিকোয়েন্স নম্বর থেকে বেশি মানে AUTO_INCREMENT পরিবর্তন করার চেষ্টা করা হয় তবে MySQL নির্দিষ্ট মান থেকে নতুন মান জমা করা শুরু করবে।

এটি আরও স্পষ্ট করার জন্য 'emp1' টেবিলে AUTO_INCREMENT মান ১০৮ করি, যা বর্তমান সিকোয়েন্স নম্বর থেকে বেশি, অতএব MySQL নতুন ইনসার্ট করা মানগুলো নির্দিষ্ট AUTO_INCREMENT মান অর্থাৎ ১০৮ থেকে শুরু করবে।

mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 108; Query OK, 3 rows affected (0.30 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Daksh'); Query OK, 1 row affected (0.04 sec) mysql> Insert into emp1(name) values('Yashraj'); Query OK, 1 row affected (0.06 sec) mysql> Select * from emp1; +-----+---------+ | id  | NAME    | +-----+---------+ | 100 | Sohan   | | 101 | Harshit | | 102 | Aryan   | | 108 | Daksh   | | 109 | Yashraj | +-----+---------+ 5 rows in set (0.00 sec)

  1. MySQL-এ LENGTH() ফাংশন দিয়ে ৫ ক্যারেক্টার سے কম দৈর্ঘ্যের রো বের করা

  2. MySQL-এ AUTO_INCREMENT ফিল্ডের পরের সিকোয়েন্স নাম্বার জানা

  3. MySQL-এ বর্তমান তারিখের চেয়ে ছোট AdmissionDate বিশিষ্ট রেকর্ড ফিল্টার করা

  4. MySQL-এ বর্তমান তারিখ (NOW/CURDATE) থেকে ছোট তারিখের রেকর্ড বের করা