MySQL 8.0.16+ CHECK कंस्ट्रेंट का पूर्ण समर्थन करता है। पुराने संस्करण इसे पार्स करते हैं लेकिन लागू नहीं करते।
सिंटैक्स
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
CHECK (condition)
);
उदाहरण: आयु सीमा कंस्ट्रेंट
mysql> CREATE TABLE addCheckConstraintDemo (
-> Age INT,
-> CHECK (Age >= 18)
-> );
Query OK, 0 rows affected (0.55 sec)
नामित कंस्ट्रेंट (बेहतर प्रबंधन के लिए)
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT,
salary DECIMAL(10,2),
CONSTRAINT chk_age CHECK (age >= 18),
CONSTRAINT chk_salary CHECK (salary > 0)
);
मौजूदा टेबल पर कंस्ट्रेंट जोड़ना
ALTER TABLE employees
ADD CONSTRAINT chk_age CHECK (age >= 18);
कंस्ट्रेंट हटाना
ALTER TABLE employees
DROP CHECK chk_age;
कंस्ट्रेंट अक्षम/सक्षम करना (MySQL 8.0.16+)
ALTER TABLE employees
ALTER CHECK chk_age NOT ENFORCED; -- अक्षम
ALTER TABLE employees
ALTER CHECK chk_age ENFORCED; -- सक्षम
महत्वपूर्ण नोट
- MySQL 8.0.16 से पहले: CHECK क्लॉज स्वीकार होता है लेकिन लागू नहीं होता (चेतावनी देता है)।
- कंस्ट्रेंट में सबक्वेरी, फंक्शन कॉल (
NOW(),UUID()), ऑटो-इन्क्रीमेंट कॉलम उपयोग नहीं कर सकते। - NULL मान CHECK कंस्ट्रेंट को पास कर जाते हैं (अगर कंडीशन NULL देती है)।
सत्यापन
mysql> INSERT INTO addCheckConstraintDemo VALUES (25); -- OK
mysql> INSERT INTO addCheckConstraintDemo VALUES (15); -- Error 3819: Check constraint violated