数据库专辑--WITH CHECK OPTION的用法
创始人
2024-03-13 09:32:14

系列文章

C#底层库–数据库访问帮助类(MySQL版)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126886379

文章目录

  • 系列文章
  • 前言
  • 一、概念介绍
  • 二、测试用例
    • 2.1 数据准备
    • 2.2 数据查询
    • 2.3 修改视图,加上WITH CHECK OPTION
    • 2.4 再次进行数据插入
    • 2.5 再次查询数据
  • 三、用法总结


前言

本专辑主要介绍SQL的功能与特点、SQL数据定义语言(表、视图、索引、约束)、SQL数据操作语言(数据检索、数据插入、数据删除、数据更新)、创建与删除触发器、SQL数据控制语言(安全性和授权、事务处理)以及嵌入式SQL。
如果你对本专辑感兴趣,持续关注吧。大家有任何问题,也可以评论区反馈,私信我。

一、概念介绍

视图的定义:

视图不是真实存在的基本表,而是一个虚拟表

视图的作用:

1、可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求
2、使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。
3、视图可以使用户只关心他感兴趣的某些特定数据和所负责的特定任务,而那些不需要的或者无用的数据则不再视图中显示。
4、视图大大地简化了用户对数据的操作
5、视图可以让不同的用户以不同的方式看到不同或者相同的数据集。
6、在某些情况下,由于表中数据量太大,因此在表的设计时常对表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。
7、视图提供了一个简单而有效的安全机制

视图的创建:

CREATE VIEW 视图名(列表名)
AS SELECT 查询子句
[WITH CHECK OPTION]

二、测试用例

2.1 数据准备

创建用户信息表userinfo

CREATE TABLE userinfo(
sno CHAR(10) NOT NULL UNIQUE,
sname CHAR(40) UNIQUE,
city CHAR(20),
PRIMARY KEY (sno) 
);

创建用户信息视图V_userinfo,条件:“城市”只取“镇江”的数据。

CREATE VIEW V_userinfo
AS 
SELECT * FROM userinfo
WHERE city='zhengjiang'

向视图中插入数据,本质也是往表中插入数据

INSERT INTO V_userinfo VALUES('00001','成成','zhengjiang');
INSERT INTO V_userinfo VALUES('00002','欣欣','zhengjiang');
INSERT INTO V_userinfo VALUES('00003','刘健','nanjiang');

数据插入成功,如下图所示:
在这里插入图片描述

2.2 数据查询

查询表

SELECT * FROM userinfo

结果
在这里插入图片描述

查询视图

SELECT * FROM V_userinfo

结果
在这里插入图片描述

2.3 修改视图,加上WITH CHECK OPTION

修改视图

ALTER VIEW V_userinfo
AS 
SELECT * FROM userinfo
WHERE city='zhengjiang'
WITH CHECK OPTION

运行结果:成功

2.4 再次进行数据插入

插入00004

INSERT INTO V_userinfo VALUES('00004','婷婷','zhengjiang');

运行结果:

1 queries executed, 1 success, 0 errors, 0 warnings查询:INSERT INTO V_userinfo VALUES('00004','婷婷','zhengjiang')共 1 行受到影响执行耗时   : 0.009 sec
传送时间   : 0 sec
总耗时      : 0.009 sec

插入00005

INSERT INTO V_userinfo VALUES('00005','壮壮','nanjiang');

运行结果:

1 queries executed, 0 success, 1 errors, 0 warnings查询:INSERT INTO V_userinfo VALUES('00005','壮壮','nanjiang')错误代码: 1369
CHECK OPTION failed 'test.v_userinfo'执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0 sec

2.5 再次查询数据

查询表

SELECT * FROM userinfo

结果
在这里插入图片描述

查询视图

SELECT * FROM V_userinfo

结果
在这里插入图片描述
可以清楚的发现,将入了“WITH CHECK OPTION”语句,00005这条数据无法插入进数据库中。

三、用法总结

WITH CHECK OPTION(带有检查选项)表示对update、insert、delete操作时保证更新、插入或者删除满足视图定义中的谓词条件(即子查询中的条件表达式)。
使用WITH CHECK OPTION的视图,对于数据插入,不满足where条件的数据,插入失败,错误代码1369。具有一个检查的功能。

with check option保证了通过视图进行的修改,必须也能通过该视图看到修改后的结果。
修改的结目标和结果都只在视图上呈现,这样不会影响其他视图。
所以你插入,那么插入这条记录在刷新视图后必须可以看到;
如果修改,修改完的结果也必须能通过该视图看到;
如果删除,当然只能删除视图里有显示的记录。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...