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

MySQL-এ BEFORE UPDATE ট্রিগার দিয়ে CHECK CONSTRAINT কীভাবে অনুকরণ করবেন আপডেটের সময়?


আমরা জানি, 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

  1. BEFORE INSERT ট্রিগার দিয়ে CHECK CONSTRAINT অনুকরণ করে মান ইনসার্ট করুন

  2. MySQL ভিউতে মান আপডেট করা (টেবিলের মতো)

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

  4. MySQL-এ UPDATE দিয়ে বুলিয়ান মান আপডেট করা