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

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

MySQL CHECK CONSTRAINT সাপোর্ট করে না, কিন্তু WITH CHECK OPTION` সহ ভিউ ব্যবহার করে এটি অনুকরণ করা যায়।

উদাহরণ

car1 টেবিলে রেজিস্ট্রেশন নম্বরের ফিক্সড সিনট্যাক্স: দুটি অক্ষর, ড্যাশ, তিনটি অঙ্ক, ড্যাশ, দুটি অক্ষর।

mysql> CREATE TABLE car1 (number CHAR(9));
Query OK, 0 rows affected (0.32 sec)

mysql> INSERT INTO car1 VALUES('AB-235-YZ');
Query OK, 1 row affected (0.10 sec)

mysql> INSERT INTO car1 VALUES('AB-2X5-YZ');
Query OK, 1 row affected (0.04 sec)

দ্বিতীয় মান বৈধ নয় (অঙ্কের মাঝপথে অক্ষর)। এখন ভিউ দিয়ে চেক কনস্ট্রেইন্ট অনুকরণ:

mysql> CREATE VIEW car_invalid_check AS
    -> SELECT * FROM car1
    -> WHERE number RLIKE '^[[:alpha:]]{2}-[[:digit:]]{3}-[[:alpha:]]{2}$'
    -> WITH CHECK OPTION;
Query OK, 0 rows affected (0.12 sec)

mysql> INSERT INTO car_invalid_check VALUES('AB-2X5-YZ');
ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check'

mysql> INSERT INTO car_invalid_check VALUES('AB-235-YZ');
Query OK, 1 row affected (0.09 sec)

mysql> UPDATE car_invalid_check SET NUMBER = 'AB-2X5-ZT';
ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check'

ভিউর মাধ্যমে ইনসার্ট/আপডেট করলে রেগুলার এক্সপ্রেশন শর্ত পূরণ না হলে CHECK OPTION failed এরর ফেলে।

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

  2. MySQL-এ চলমান কোয়েরি বন্ধ করা (KILL COMMAND)

  3. MySQL-এ অ্যারে ভেরিয়েবল সিমুলেট করা (টেম্পোরারি টেবিল ব্যবহার)

  4. MySQL-এ NOW() এবং INTERVAL ব্যবহার করে সময়ের পার্থক্য বের করুন