创建不可更新的ViewDeC视图:禁止通过视图更新MySQL的Branch表
创建不可更新的ViewDeC视图(MySQL)
需求是创建视图展示Branch表的所有分支信息,同时禁止通过该视图修改原表数据,在MySQL中可以通过两种方式实现:
方法1:使用WITH READ ONLY子句(MySQL 8.0及以上版本)
这是最直观的只读视图创建方式,MySQL 8.0及以后版本支持该语法,直接标记视图为只读,任何通过视图的增删改操作都会被数据库拒绝。
创建视图的SQL代码:
CREATE VIEW ViewDeC AS SELECT BranchNo, Street, City, PostCode FROM Branch WITH READ ONLY;
方法2:利用视图不可更新特性(兼容低版本MySQL)
如果使用MySQL 8.0以下版本,不支持WITH READ ONLY,可以通过构造让数据库无法生成更新计划的视图来实现只读效果。比如添加DISTINCT关键字(由于BranchNo是唯一标识,添加后不会改变查询结果,但会让视图变为不可更新):
CREATE VIEW ViewDeC AS SELECT DISTINCT BranchNo, Street, City, PostCode FROM Branch;
验证效果
尝试通过视图执行更新操作,例如:
UPDATE ViewDeC SET City = 'Edinburgh' WHERE BranchNo = 'B003';
此时MySQL会抛出错误,提示无法通过该视图修改基表数据。
内容的提问来源于stack exchange,提问作者visaolangle00
相关产品推荐
相关产品推荐

