MySQL CHECK কনস্ট্রেইন্ট সরাসরি সমর্থন করে না (পুরানো ভার্সনে), কিন্তু VIEW WITH CHECK OPTION ব্যবহার করে এটি অনুকরণ করা যায়।
উদাহরণ: গাড়ির নম্বার ফরম্যাট ভ্যালিডেশন
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) -- কোনো এরর নেই!
VIEW WITH CHECK OPTION তৈরি
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' -- আপডেট ব্লক
কারণ
WITH CHECK OPTION নিশ্চিত করে যে VIEW-এর মাধ্যমে ইনসার্ট/আপডেট হওয়া সারিগুলো VIEW-এর WHERE শর্ত পূরণ করবে। না করলে এরর ফেলে।
সীমাবদ্ধতা
- শুধু VIEW-এর মাধ্যমে ডেটা ম্যানিপুলেশন করলে কাজ করে। বেস টেবিলে সরাসরি ইনসার্ট করলে বাইপাস হয়।
- ট্রিগার বা GENERATED COLUMN-এ 비해 কম নিরাপদ।