উত্তর: হ্যাঁ, আপডেটেবল ভিউ থেকে ডিলিট করলে বেস টেবিল প্রভাবিত হয়
MySQL-এ যদি ভিউ আপডেটেবল হয় (সিঙ্গেল টেবিল, কোনো এগরিগেট/ডISTINCT/GROUP BY/UNION নেই), তবে ভিউতে DELETE, UPDATE, INSERT করলে বেস টেবিলে পরিবর্তন হয়।
উদাহরণ
বেস টেবিল তৈরি
mysql> create table deleteFromBaseTableDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.83 sec)
mysql> insert into deleteFromBaseTableDemo(Name) values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into deleteFromBaseTableDemo(Name) values('Carol');
Query OK, 1 row affected (0.15 sec)
mysql> insert into deleteFromBaseTableDemo(Name) values('Bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into deleteFromBaseTableDemo(Name) values('Sam');
Query OK, 1 row affected (0.14 sec)
ভিউ তৈরি
mysql> CREATE VIEW delete_view AS SELECT Id, Name FROM deleteFromBaseTableDemo; Query OK, 0 rows affected (0.17 sec)
ভিউ ডেটা যাচাই
mysql> SELECT * FROM delete_view;
আউটপুট (৪ রো)
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | | 3 | Bob | | 4 | Sam | +----+-------+
ভিউ থেকে Id=4 ডিলিট
mysql> DELETE FROM delete_view WHERE Id = 4; Query OK, 1 row affected (0.26 sec)
ভিউ ডেটা (৩ রো)
mysql> SELECT * FROM delete_view;
আউটপুট
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | | 3 | Bob | +----+-------+
বেস টেবিল ডেটা (৩ রো)
mysql> SELECT * FROM deleteFromBaseTableDemo;
আউটপুট
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | | 3 | Bob | +----+-------+
দুই টেবিলে Id=4 মুছে গিয়েছে।
নোট: কমপ্লেক্স ভিউ (JOIN, GROUP BY, SUBQUERY) আপডেটেবল নয়। WITH CHECK OPTION ব্যবহার করলে শর্তভাঙ্ঘা রো ইনসার্ট/আপডেট ব্লক হয়।