MySQL-এ প্রাইমারি কী কলামে এক্সট্রা NOT NULL লিখার প্রয়োজন নেই
MySQL-এ Primary Key হলো NOT NULL + UNIQUE এর কম্বিনেশন। তাই প্রাইমারি কী ডিক্লেয়ার করার সময় আলাদা করে NOT NULL লিখতে হয় না — MySQL অটোমেটিক্যালি এটিকে NOT NULL বানিয়ে দেয়।
উদাহরণ
টেবিল তৈরি (Id-এ NOT NULL লিখা নেই, শুধু PRIMARY KEY)
mysql> CREATE TABLE NotNullAddDemo (
-> Id INT AUTO_INCREMENT,
-> PRIMARY KEY(Id)
-> );
টেবিল কাঠামো চেক (DESC)
mysql> DESC NotNullAddDemo;
+-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | +-------+---------+------+-----+---------+----------------+
দেখুন Null কলামে NO — অর্থাৎ এটি NOT NULL।
NULL ইনসার্ট চেষ্টা (AUTO_INCREMENT-এর কারণে কাজ করে)
mysql> INSERT INTO NotNullAddDemo VALUES(NULL); mysql> INSERT INTO NotNullAddDemo VALUES(NULL);
এখন ১ ইনসার্ট করলে এরর (Duplicate entry)
mysql> INSERT INTO NotNullAddDemo VALUES(1); ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
কারণ: প্রথম দুটি NULL ইনসার্ট করলে AUTO_INCREMENT ১ এবং ২ অ্যাসাইন করেছে। তাই ১ ইনসার্ট করলে ডুপ্লিকেট হয়।
সঠিক মান ইনসার্ট
mysql> INSERT INTO NotNullAddDemo VALUES(3), (NULL);
ফলাফল
mysql> SELECT * FROM NotNullAddDemo;
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | +----+
সারাংশ: প্রাইমারি কী-তে NOT NULL রিডান্ডেন্ট। MySQL নিজে হ্যান্ডেল করে।