কম্পিউটার টিউটোরিয়াল

ট্রিগার ব্যবহার করে MySQL-এ CHECK CONSTRAINT অনুকরণ করা

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 দুইয়ে ভ্যালিডেশন বাধ্যতামূলক করা যায়।

  1. PHP স্ক্রিপ্ট দিয়ে MySQL টেবিল তৈরি করা

  2. VIEW ব্যবহার করে CHECK CONSTRAINT অনুকরণ করা

  3. MySQL-এ টেবিলে CHECK CONSTRAINT যোগ করা

  4. MySQL ভার্সন কীভাবে চেক করবেন