কম্পিউটার

আমরা কিভাবে বলতে পারি যে MySQL-এ, AUTO_INCREMENT প্রাইমারি কী-এর চেয়ে অগ্রাধিকার নিচ্ছে?


এটি একটি উদাহরণের সাহায্যে বোঝা যায় যেখানে একটি AUTO_INCREMENT কলামে NULL মান সন্নিবেশ করা হয়েছে এবং MySQL একটি নতুন ক্রম নম্বর প্রদান করে৷

mysql> Create table employeeinfo(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name Varchar(10));
Query OK, 0 rows affected (0.16 sec)

mysql> Insert into employeeinfo(id, Name) values(NULL, 'Saurabh');
Query OK, 1 row affected (0.07 sec)

mysql> Select * from employeeinfo;
+----+---------+
| id | Name    |
+----+---------+
| 1  | Saurabh |
+----+---------+
1 row in set (0.00 sec)

যেমন আমরা উপরের উদাহরণ থেকে লক্ষ্য করতে পারি যে কলাম 'id'টিকে শূন্য নয় ঘোষণা করা হয়েছে সেইসাথে প্রাথমিক কী বিট এখনও এটি একটি NULL মান গ্রহণ করে। কারণ কলাম 'id' কে AUTO_INCREMENT হিসাবেও ঘোষণা করা হয়েছে। এই কারণে, যখন আমরা সেই কলামে NULL মান সন্নিবেশ করি তখনও MySQL সিকোয়েন্স নম্বর প্রদান করে।

বিপরীতে, যদি আমরা একটি কলামে NULL সন্নিবেশ করার চেষ্টা করি যা প্রাথমিক কী হিসাবে ঘোষণা করা হয় কিন্তু AUTO_INCREMENT নয় তাহলে MySQL নিম্নরূপ একটি ত্রুটি প্রদান করে -

mysql> create table people(id INT primary key, name varchar(10));
Query OK, 0 rows affected (0.18 sec)

mysql> Insert into people(id, name) values(NULL, 'Rahul');
ERROR 1048 (23000): Column 'id' cannot be null

তাই, আমরা বলতে পারি যে AUTO_INCREMENT প্রাথমিক কী সীমাবদ্ধতার আগে কারণ যে কোনও ক্ষেত্রে প্রাথমিক কী সীমাবদ্ধতা পরীক্ষা করার জন্য AUTO_INCREMENT প্রক্রিয়াটি আগে সমাধান করা দরকার৷


  1. আমরা কি MySQL টেবিল থেকে একটি প্রাথমিক কী সরাতে পারি?

  2. মাইএসকিউএল ডিবিতে বিদেশী কী কীভাবে সনাক্ত করবেন?

  3. মাইএসকিউএল-এ স্বয়ংক্রিয়-বৃদ্ধি সহ 1000 থেকে শুরু হওয়া একটি INT ক্ষেত্র (প্রাথমিক কী নয়) কীভাবে তৈরি করবেন?

  4. কিভাবে আমি MySQL এ একটি প্রাথমিক কী ড্রপ করব?