MySQL CHECK কনস্ট্রেইন্ট সরাসরি সমর্থন করে না (৮.০.১৬ এর আগে), কিন্তু TRIGGER ব্যবহার করে এটি অনুকরণ করা যায়।
উদাহরণ: গাড়ির নম্বার ফরম্যাট ভ্যালিডেশন
ফরম্যাট: দুই অক্ষর, ড্যাশ, তিন ডিজিট, ড্যাশ, দুই অক্ষর (যেমন AB-235-YZ)।
mysql> CREATE TABLE car (number CHAR(9));
Query OK, 0 rows affected (0.32 sec)
mysql> INSERT INTO car VALUES('AB-235-YZ'); -- বৈধ
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO car VALUES('AB-2X5-YZ'); -- অবৈধ (ডিজিটের মধ্যে অক্ষর)
Query OK, 1 row affected (0.04 sec) -- কোনো এরর নেই!
BEFORE INSERT ট্রিগার তৈরি
mysql> DELIMITER //
mysql> CREATE TRIGGER car_insert_value BEFORE INSERT ON car
-> FOR EACH ROW
-> BEGIN
-> IF NEW.number NOT RLIKE '^[[:alpha:]]{2}-[[:digit:]]{3}-[[:alpha:]]{2}$' THEN
-> SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Not a valid Number';
-> END IF;
-> END //
Query OK, 0 rows affected (0.15 sec)
mysql> DELIMITER ;
পরীক্ষা
mysql> INSERT INTO car VALUES('AB-2X5-YZ');
ERROR 1644 (45000): Not a Valid Number -- ব্লক হয়েছে
mysql> INSERT INTO car VALUES('AB-235-YZ');
Query OK, 1 row affected (0.04 sec) -- বৈধ, গ্রহণ করা হয়েছে
BEFORE UPDATE ট্রিগার (আপডেটের জন্য)
mysql> DELIMITER //
mysql> CREATE TRIGGER car_update_value BEFORE UPDATE ON car
-> FOR EACH ROW
-> BEGIN
-> IF NEW.number NOT RLIKE '^[[:alpha:]]{2}-[[:digit:]]{3}-[[:alpha:]]{2}$' THEN
-> SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Not a valid number';
-> END IF;
-> END //
Query OK, 0 rows affected (0.11 sec)
mysql> DELIMITER ;
mysql> UPDATE car SET number='AB-2X5-YZ';
ERROR 1644 (45000): Not a valid number
ট্রিগার দিয়ে INSERT এবং UPDATE দুইয়ে ভ্যালিডেশন বাধ্যতামূলক করা যায়।