मौजूदा MySQL टेबल के किसी कॉलम पर ALTER TABLE ... MODIFY स्टेटमेंट का उपयोग करके NOT NULL कंस्ट्रेंट जोड़ा जा सकता है।
सिंटैक्स
ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
उदाहरण
test123 टेबल बनाकर ID कॉलम पर NOT NULL लागू करना:
mysql> CREATE TABLE test123(ID INT, Date DATE); Query OK, 0 rows affected (0.19 sec) mysql> DESCRIBE test123; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | ID | int(11) | YES | | NULL | | | Date | date | YES | | NULL | | +-------+---------+------+-----+---------+-------+ mysql> ALTER TABLE test123 MODIFY ID INT NOT NULL; Query OK, 0 rows affected (0.54 sec) mysql> DESCRIBE test123; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | ID | int(11) | NO | | NULL | | | Date | date | YES | | NULL | | +-------+---------+------+-----+---------+-------+
परिणाम विश्लेषण
NullकॉलमYESसेNOमें बदल गया
<ली>अब - मौजूदा डेटा में NULL नहीं होना चाहिए (वरना एरर - पिछला लेख देखें)
ID कॉलम में NULL मान इन्सर्ट/अपडेट नहीं कर सकते
वैकल्पिक सिंटैक्स (MySQL 8.0.13+)
ALTER TABLE table_name ALTER COLUMN column_name SET NOT NULL;
संयुक्त ऑपरेशन
एक साथ NOT NULL और DEFAULT सेट करना:
ALTER TABLE test123 MODIFY ID INT NOT NULL DEFAULT 0;
सत्यापन
DESCRIBE table_name;
-- Null = NO दिखना चाहिए
-- टेस्ट इन्सर्ट
INSERT INTO test123 (Date) VALUES ('2024-01-01');
-- एरर: Field 'ID' doesn't have a default value