PLSQL_基础系列05_视图控制WITH CHECK OPTION(案例)

简介: 2014-12-09 Created By BaoXinjian 一、摘要 通过有with check option选项的视图操作基表(只是面对单表,对连接多表的视图正在寻找答案),有以下结论: 首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过视图来操作。

2014-12-09 Created By BaoXinjian

一、摘要


通过有with check option选项的视图操作基表(只是面对单表,对连接多表的视图正在寻找答案),有以下结论:

首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过视图来操作。

1. 对于update, 有with check option,要保证update后,数据要被视图查询出来

2. 对于delete, 有无with check option都一样

3. 对于insert, 有with check option,要保证insert后,数据要被视图查询出来

对于没有where 子句的视图,使用with check option是多余的。

 

二、案例


Step1. 创建表

create table emp(
    id number(5,0),
    name varchar2(12),
    address varchar2(12)
);

insert into emp values (5,'張三','廣西');
insert into emp values (6,'李四','北京');
insert into emp values (7,'王五','山東');

 

Step2. 创建带with check option的视图

create view emp_view
as
select * from emp where id=5
with check option;

 

Step3. 创建没有with check option的视图

create view emp_view2
as
select * from emp where id='5'

 

Step4. update 操作

update  emp_view set  name='陈六' where id=6;-,虽然基表有id=6的记录,但emp_view无法查看到,所以这个修改不会影响基表内容

update  emp_view set  id=6 where id=5; --出现 view WITH CHECK OPTION where-clause violation错误

update  emp_view2 set id=6 where id=5; --成功执/plain行

结论:对于update,有无with选项都是只更改视图出现的記錄,对有whih选项的update,要保证更改后仍可以出现在视图中

 

Step5. 操作

--update操作
update  emp set id=5 where name='張三';

--delete操作
delete emp_view where id='5'

--结论:
--对于delete,有无with选项是一样的。
--insert操作 insert into emp_view values (8,'','江蘇');--出现 view WITH CHECK OPTION where-clause violation错误 insert into emp_view2 values (8,'','江蘇');--执行成功

 

Step6. 结论:

对于insert,有with选项,插入的数据要最终要可以显示在视图中,对于无with选项的视图可以插入任何不违反约束的记录

 

Thanks and Regards

参考: http://blog.csdn.net/fredrickhu/article/details/4743204

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
安全 Shell 网络安全
基于Vulnhub靶场—DC4渗透测试过程
Vulhub是一个开源项目,专注于安全漏洞的复现和学习。包括Web应用、容器和操作系统漏洞。项目特点包括丰富的漏洞场景、详细的复现指南、便捷的环境部署和持续更新。通过Vulhub,安全从业者可以学习和研究漏洞利用技术。此外,文章还介绍了如何下载和搭建Vulhub靶机DC-4,并详细描述了利用Burp Suite进行密码爆破和命令执行,最终获取root权限的过程。
929 0
|
10月前
|
Cloud Native 持续交付 云计算
云原生架构的演进与挑战
随着云计算技术的不断发展,云原生架构已成为企业数字化转型的重要支撑。本文深入探讨了云原生架构的概念、发展历程、核心技术以及面临的挑战,旨在为读者提供一个全面了解云原生架构的视角。通过分析Kubernetes、Docker等关键技术的应用,以及微服务、持续集成/持续部署(CI/CD)等实践案例,本文揭示了云原生架构在提高应用开发效率、降低运维成本、增强系统可扩展性等方面的显著优势。同时,也指出了云原生架构在安全性、复杂性管理等方面所面临的挑战,并提出了相应的解决策略。
|
前端开发 Java 微服务
Unable to find GatewayFilterFactory with name TokenRelay
Unable to find GatewayFilterFactory with name TokenRelay
|
Python
分段模型线性化(PWL)【Python|Gurobi实现】
分段模型线性化(PWL)【Python|Gurobi实现】
1038 0
|
数据可视化 uml
UML——面向对象技术
封装(Encapsulation):隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高复用性和安全性
|
SQL 存储 关系型数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库
|
存储 索引 Python
深入NumPy:Python科学计算库的高级应用
在本篇文章中,我们将探讨Python中的NumPy库的一些高级特性和技巧,包括广播机制、矢量化操作、高级索引、结构化数组以及NumPy中的随机抽样等内容。这些功能将有助于我们进行更加复杂和高效的科学计算。