কম্পিউটার

যখন আমরা AUTO_INCREMENT মান পরিবর্তন করি যা বর্তমান ক্রম সংখ্যার চেয়ে কম তখন মাইএসকিউএল কী রিটার্ন করে?


যখন আমরা একটি MySQL কলামে AUTO_INCREMENT ব্যবহার করি, তখন ক্রম সংখ্যা সর্বদা ডিফল্ট মান 1 থেকে বা আমাদের নির্দিষ্ট করা মান থেকে ক্রমবর্ধমান ক্রমে বৃদ্ধি পায়।

এই কারণেই, MySQL AUTO_INCREMENT মানকে এমন একটি মানতে পরিবর্তন করার অনুমতি দেয় না যা বর্তমান ক্রম সংখ্যার চেয়ে কম। এটা নিচের উদাহরণের সাহায্যে বোঝা যাবে -

উদাহরণ

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

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

এখন যখন আমরা ALTER TABLE ক্যোয়ারির সাহায্যে AUTO_INCREMENT মানকে 90 এ পরিবর্তন করার চেষ্টা করি, MySQL কোনো ত্রুটি এবং সতর্কতা প্রদান করে না কারণ ক্যোয়ারীটি ঠিক আছে কিন্তু যখন আমরা টেবিলে নতুন মান সন্নিবেশ করি, MySQL নির্দিষ্ট করা তুলনা করে একটি বর্তমান ক্রম সংখ্যা সহ AUTO_INCREMENT মান। যেহেতু নির্দিষ্ট AUTO_INCREMENT মান (90) বর্তমান ক্রম সংখ্যা (101) থেকে কম তাই MySQL 102 থেকে নতুন মান সংগ্রহ করতে শুরু করে যা নিম্নলিখিত প্রশ্নগুলি থেকে লক্ষ্য করা যায় -

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 মানকে 108-এ পরিবর্তন করি, বর্তমান ক্রম সংখ্যার চেয়ে বেশি, তাই MySQL নির্দিষ্ট AUTO_INCREMENT মান থেকে অর্থাৎ 108 থেকে নতুন সন্নিবেশিত মানগুলি জমা করতে শুরু করে৷

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 এ 5 অক্ষরের কম?

  2. AUTO_INCREMENT ক্ষেত্রের ক্রমানুসারে পরবর্তী নম্বর পেতে MySQL ক্যোয়ারী?

  3. যখন ভর্তির তারিখ MySQL-এ বর্তমান তারিখের চেয়ে কম তখন তারিখের তুলনা করুন

  4. মাইএসকিউএল দিয়ে বর্তমান তারিখের চেয়ে কম তারিখ কীভাবে নির্বাচন করবেন?