• 数据库之视图更新


    视图定义---视图是从一个 或多个表(或视图) 导出的虚拟表 ,视图是数据库系统提供给用户以多种角度观察数据的重要机制

    视图是一个虚表,不是实际存储的数据,更新视图是指更新视图的基本表,但不是所有的视图都能够进行更新,所以视图可以分为可更新视图不可更新视图

    可更新视图有三种:

    (1).同时满足以下条件

    a. 创建时select中没有聚合函数,也没有top,groupby,union子句及Distinct关键字;

    b.创建视图的select 不包含从基本表中通过计算所得到的列;

    c. from子句中至少有一个基本表;

    总结就是不能包含基本表中不存在的数据

    (2). 可更新的分区视图

    (3). 通过Instead of 触发器创建的可更新视图

    更新视图注意事项:

    Insert :插入数据到可更新视图时应该注意,如果视图由多个基本表组成则不能使用Insert插入数据到视图

    Update: 如果视图依赖多个基本表,一次的更新操作 只能变动一个基本表数据,不能在一次update中同时更新两个表的内容

    Delete: 如果包含多个基本表(不包括分区表),则不能使用delete 删除视图的数据

    PS:视图不能创建索引;不能把规则,默认值和触发器与视图相关联

    另外创建视图时候如果添加了 With Check Option  则更新视图时候即增,删,改时候,系统首先会检查你的改变是否满足定义时候的条件(where),如果不满足则拒绝执行,比如你视图查的是所有计算机类别的书,但是插入,修改时候却更新为了金融类 的书时候是不能执行的。

  • 相关阅读:
    SQL注入: with rollup特性
    【转】kali配置--修改IP和DNS
    【转】getopt模块,实现获取命令行参数
    socket编程: TypeError: must be bytes or buffer, not str
    Ansible进阶之企业级应用
    Ansible之Playbook详解
    Ansible之常用模块介绍
    JAVA企业级应用Tomcat实战
    ubuntu网络、包管理、工作内容小结
    shell细节决定高度
  • 原文地址:https://www.cnblogs.com/Fusheng/p/5196264.html
Copyright © 2020-2023  润新知