আমরা জানি, MySQL ফরেন কী দিয়ে রেফারেনশিয়াল ইন্টিগ্রিটি সাপোর্ট করে কিন্তু CHECK কনস্ট্রেইন্ট সাপোর্ট করে না। কিন্তু ট্রিগার ব্যবহার করে এগুলো অনুকরণ করা যায়। নিচের উদাহরণ:
উদাহরণ
মান লিইয়ে 'car' নামক একটি টেবিল আছে যাতে ফিক্স সিনট্যাক্সের রেজিস্ট্রেশন নম্বর থাকবে: দুটি লেটার, একটি ড্যাশ, তিনটি ডিজিট, একটি ড্যাশ, দুটি লেটার।
mysql> Create table car (number char(9)); Query OK, 0 rows affected (0.32 sec)
আপডেটের সময় CHECK CONSTRAINT অনুকরণের জন্য BEFORE UPDATE ট্রিগার তৈরি —
এখন যদি ভুল মান দিয়ে টেবিল আপডেট করার চেষ্টা করা হয়, MySQL আমাদের বাধা দেবে না:
mysql> update car set number='AB-2X5-YZ'; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0
উপরের কোয়েরি টেবিলে ভুল মান আপডেট করেছে। নিচের কোয়েরিতে 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