কম্পিউটার

ভিউ ব্যবহার করে আমরা কিভাবে চেক কন্সট্রাইন্ট অনুকরণ করতে পারি?


আমরা জানি যে মাইএসকিউএল রেফারেন্সিয়াল অখণ্ডতার জন্য বিদেশী কী সমর্থন করে কিন্তু এটি চেক সীমাবদ্ধতা সমর্থন করে না। কিন্তু আমরা ট্রিগার ব্যবহার করে তাদের অনুকরণ করতে পারি। এটি নীচে দেওয়া উদাহরণের সাহায্যে চিত্রিত করা যেতে পারে -

উদাহরণ

ধরুন আমাদের কাছে ‘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'

  1. কিভাবে MySQL group_concat ব্যবহার করে মান উদ্ধৃত করবেন?

  2. মাইএসকিউএল আপডেট ব্যবহার করে হাইফেনগুলি কীভাবে সরিয়ে ফেলা যায়?

  3. মাইএসকিউএল ভিউ ব্যবহার করে সংখ্যায় বিভাজক কীভাবে যুক্ত করবেন?

  4. সময়ের পার্থক্য কিভাবে পেতে হয় তা পরীক্ষা করতে MySQL ক্যোয়ারী