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

MySQL ভিউ কখন ইনকনসিস্টেন্ট হয় এবং কনসিস্টেন্সি নিশ্চিত করা

আপডেটেবল ভিউতে আংশিক ডেটা দেখায় এমন ভিউতে আপডেট করলে ভিউ ইনকনসিস্টেন্ট হতে পারে। কনসিস্টেন্সি নিশ্চিত করতে WITH CHECK OPTION ক্লজ ব্যবহার করা উচিত।

WITH CHECK OPTION ক্লজ (CREATE VIEW-এ অপশনাল) আমাদেরকে সেই সারিগুলো আপডেট বা ইনসার্ট করতে বাধা দেয় যা ভিউয়ের মাধ্যমে দৃশ্যমান নয়। সহজ কথায়, ইনসার্ট/আপডেট অপারেশন ভিউর ডেফিনিশন অনুযায়ী কনফার্মড হয় কিনা তা MySQL নিশ্চিত করে।

সিনট্যাক্স

CREATE OR REPLACE VIEW view_name AS select_statement WITH CHECK OPTION;

উদাহরণ

Student_info টেবিল:

mysql> SELECT * FROM student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
|  101 | YashPal | Amritsar   | History    |
|  105 | Gaurav  | Chandigarh | Literature |
|  125 | Raman   | Shimla     | Computers  |
|  130 | Ram     | Jhansi     | Computers  |
+------+---------+------------+------------+

WITH CHECK OPTION ছাড়া ভিউ:

mysql> CREATE OR REPLACE VIEW Info AS
    -> SELECT Id, Name, Address, Subject
    -> FROM student_info WHERE Subject = 'Computers';
Query OK, 0 rows affected (0.46 sec)

mysql> INSERT INTO Info(Id, Name, Address, Subject)
    -> VALUES(132, 'Shyam', 'Chandigarh', 'Economics');
Query OK, 1 row affected (0.37 sec)

mysql> SELECT * FROM student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
|  101 | YashPal | Amritsar   | History    |
|  105 | Gaurav  | Chandigarh | Literature |
|  125 | Raman   | Shimla     | Computers  |
|  130 | Ram     | Jhansi     | Computers  |
|  132 | Shyam   | Chandigarh | Economics  |
+------+---------+------------+------------+

mysql> SELECT * FROM info;
+------+-------+---------+-----------+
| Id   | Name  | Address | Subject   |
+------+-------+---------+-----------+
|  125 | Raman | Shimla  | Computers |
|  130 | Ram   | Jhansi  | Computers |
+------+-------+---------+-----------+

নতুন রো ভিউর ডেফিনিশন মেলেনি, তাই ভিউতে দেখাচ্ছে না (ইনকনসিস্টেন্ট)।

WITH CHECK OPTION সহ ভিউ:

mysql> CREATE OR REPLACE VIEW Info AS
    -> SELECT Id, Name, Address, Subject
    -> FROM student_info WHERE Subject = 'Computers' WITH CHECK OPTION;
Query OK, 0 rows affected (0.06 sec)

বৈধ রো ইনসার্ট (অনুমোদিত):

mysql> INSERT INTO Info(Id, Name, Address, Subject)
    -> VALUES(133, 'Mohan', 'Delhi', 'Computers');
Query OK, 1 row affected (0.07 sec)

mysql> SELECT * FROM info;
+------+-------+---------+-----------+
| Id   | Name  | Address | Subject   |
+------+-------+---------+-----------+
|  125 | Raman | Shimla  | Computers |
|  130 | Ram   | Jhansi  | Computers |
|  133 | Mohan | Delhi   | Computers |
+------+-------+---------+-----------+

অবৈধ রো ইনসার্ট (ব্লক করা হয়েছে):

mysql> INSERT INTO Info(Id, Name, Address, Subject)
    -> VALUES(134, 'Charanjeet', 'Amritsar', 'Geophysics');
ERROR 1369 (HY000): CHECK OPTION failed
  1. MySQL-এ একই কোয়েরিতে WHERE, AND ও OR একসাথে ব্যবহার

  2. MySQL-এ অনন্য (Distinct) ভ্যালু এবং তাদের কাউন্ট বের করা

  3. MySQL-এ SHOW CREATE TABLE দিয়ে ক্যাসকেড (CASCADE) দেখানো

  4. MySQL VIEW-এ WHERE ক্লজ ব্যবহার করা