MySQL-এ ইতিমধ্যে তৈরি কলামে NOT NULL কনস্ট্রেইন্ট যোগ করতে ALTER TABLE ... MODIFY স্টেটমেন্ট ব্যবহার করা হয়। কলামের পুরো ডেফিনিশন পুনরাবৃত্তি করতে হয়।
টেবিল তৈরি (StudentName NOT NULL নেই)
mysql> CREATE TABLE DemoTable (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.86 sec)
ডেসক্রিপশন (পূর্বে)
mysql> DESC DemoTable;
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(100) | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec)
NOT NULL কনস্ট্রেইন্ট যোগ করা
mysql> ALTER TABLE DemoTable MODIFY StudentName VARCHAR(100) NOT NULL; Query OK, 0 rows affected (1.57 sec) Records: 0 Duplicates: 0 Warnings: 0
ডেসক্রিপশন (পরে)
mysql> DESC DemoTable;
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(100) | NO | | NULL | | +-------------+--------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)
ব্যাখ্যা: MODIFY-এ কলামের পুরো টাইপ (VARCHAR(100)) এবং নতুন কনস্ট্রেইন্ট (NOT NULL) উল্লেখ করতে হয়। Null কলাম YES থেকে NO হয়েছে।
গুরুত্বপূর্ণ সতর্কতা: যদি টেবিলে ইতিমধ্যে StudentName কলামে NULL মান থাকে, তবে এই কোয়েরি ফেল হবে (Error: Column 'StudentName' cannot be null)। আগে UPDATE DemoTable SET StudentName = '' WHERE StudentName IS NULL; দিয়ে NULL গুলো দূর করুন।
বিকল্প: ALTER TABLE DemoTable CHANGE StudentName StudentName VARCHAR(100) NOT NULL; — CHANGE-এ পুরনো নাম, নতুন নাম, টাইপ সব দিতে হয়।