KingbaseES例程_重建物化视图的源表

概述

数据结构的修改步骤,数据表先删除,然后创建。如果数据表是物化视图的源表,则提示依赖关系。

Oracle的实施

  1. 创建数据表和物化视图

    create table tab_data (id int,c1 int );
    insert into tab_data values (1,1);
    create materialized view mv_data as select * from tab_data;
    call dbms_mview.refresh('mv_data', 'C') ;
    select * from mv_data;
    ID C1
    ---------- ----------
    1 1
  2. 删除数据表

    删除数据表,物化视图不能刷新,可以读取物化视图的数据。

    drop table tab_data purge ;
    
    call dbms_mview.refresh('mv_data', 'C')  ;
    ERROR at line 1:
    ORA-00942: table or view does not exist select * from mv_data;
    ID C1
    ---------- ----------
    1 1
  3. 重建数据表

    create table tab_data (id int,c1 int );
    insert into tab_data values (2,2);
  4. 刷新物化视图

    call dbms_mview.refresh('mv_data', 'C')  ;
    select * from mv_data;
    ID C1
    ---------- ----------
    2 2

KingbaseES实施

  1. 创建数据表和物化视图

    create table tab_data (id int,c1 int );
    insert into tab_data values (1,1);
    create materialized view mv_data as select * from tab_data;
    refresh materialized view mv_data;
    select * from mv_data;
    id | c1
    ----+----
    1 | 1
    (1 行记录)
  2. 删除数据表

    drop table tab_data ;
    错误: 无法删除 表 tab_data 因为有其它对象倚赖它
    描述: 物化视图 mv_data 倚赖于 表 tab_data
    提示: 使用 DROP .. CASCADE 把倚赖对象一并删除.
  3. 重建数据表和物化视图

    数据表重命名,视图定义自动修改。创建新的物化视图。

    alter table tab_data rename to tab_data_o;
    create table tab_data (id int,c1 int );
    insert into tab_data values (2, 2;
    create materialized view mv_data_n as select * from tab_data;
  4. 物化视图重命名

    do
    $$
    begin
    alter materialized view mv_data rename to mv_data_o;
    alter materialized view mv_data_n rename to mv_data;
    end;
    $$
    select * from mv_data;
    id | c1
    ----+----
    2 | 2
    (1 行记录)

视图定义使用UDF

  1. 视图定义使用UDF

    create or replace function f_data()
    returns table ( id int, c1 int )
    as
    $$ select id,c1 from tab_data; $$
    language sql; create materialized view mv_data as
    select *
    from f_data();
  2. 删除数据表,物化视图不能刷新,可以读取数据

    drop table tab_data;
    
    refresh materialized view mv_data;
    错误: 关系 "tab_data" 不存在 在位置:SQL 函数 "f_data" 在启动的时候 select * from mv_data;
    id | c1
    ----+----
    1 | 1
    (1 行记录)
  3. 重建数据表

    create table tab_data (id int,c1 int );
    insert into tab_data values (2,2);
  4. 刷新物化视图

    refresh materialized view mv_data;
    
    select * from mv_data;
    id | c1
    ----+----
    2 | 2
    (1 行记录)

总结

  • 物化视图的源表,可以在线修改数据表结构,但不能删除对象,而保留物化视图。
  • 视图定义使用UDF,可以实现Oracle模式的效果。

KingbaseES 物化视图与源表的依赖关系的更多相关文章

  1. Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

    摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 ...

  2. Oracle物化视图的用法与总结

    物化视图(material view)是什么? 物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表. 物化视图存储基于远程表的数据,也可以称为快照(类 ...

  3. Oracle远程数据建物化视图(materialized)创建简单记录,以及DBLINK的创建

    目的:实现远程数据库访问及其相应表的定时同步 一.远程数据库dblink的创建 select * from dba_db_links; select * from user_sys_privs;--查 ...

  4. (003)每日SQL学习:普通视图和物化视图

    关于这一点一直就是很懵懂的状态,今天特意网上查了一下资料,以下摘抄网上比较好的答案.以作记录. 普通视图和物化视图的区别答曰:普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本 ...

  5. ClickHouse性能优化?试试物化视图

    一.前言 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS):目前我们使用CH作为实时数仓用于统计分析,在做性能优化的时候使用了 物化视图 这一特性作为优化手段,本文主 ...

  6. calcite物化视图详解

    概述 物化视图和视图类似,反映的是某个查询的结果,但是和视图仅保存SQL定义不同,物化视图本身会存储数据,因此是物化了的视图. 当用户查询的时候,原先创建的物化视图会注册到优化器中,用户的查询命中物化 ...

  7. Oracle之物化视图

    来源于:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于 ...

  8. 《oracle每天一练》Oracle之物化视图

    相关帖子思考和跟踪 本文转自Ronger 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实 ...

  9. 物化视图刷新慢--有可能是mv log被多个mv使用造成的

    同事说物化视图刷新慢,经检生产环境,发现部分物化视图刷新慢的原因是:由于同一个物化视图日志(mv log)被多个物化视图(mv)使用,不同的物化视图(mv)使用不同的刷新间隔,导致物化视图日志(mv ...

  10. 【转】Oracle之物化视图

    原文地址:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 物化视图是一种特殊的物理表,“物化”(Materialized)视 ...

随机推荐

  1. Swoole从入门到入土(11)——HTTP服务器[Request]

    http服务器的本质是应答式的服务器.我们只需关注onRequest事件中的request(请求)和response(响应)对象.让我们一起回顾一下onRequest事件: $http->on( ...

  2. Oracle ascii函数

    一  简介 Oracle ascii函数用于返回单个字符的数字代号. 二  语法 ASCII( single_character ) 参数说明: 代表只能输入单个字符,如果输入多个,oracle只会返 ...

  3. 《系列一》-- 5、xml配置文件解析之[自定义]命名空间[标签]的解析

    阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需要看官自己去源码中验证.全系列文章基于 spring 源码 5.x 版本. Spring源码阅读系列--全局目录.md ...

  4. P1536 村村通(并查集)

    村村通 题目描述 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府 "村村通工程" 的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接 ...

  5. 树莓派开发笔记(十六):树莓派4B+安装mariadb数据库(mysql开源分支)并测试基本操作

    前言   树莓派使用数据库时,优先选择sqlite数据库,但是sqlite是文件数据库同时仅针对于单用户的情况,考虑到多用户的情况,在树莓派上部署安装mariadb数据库服务(mysql的开源分支), ...

  6. linux下安装nginx(yum源安装)

    备份yum源 cd /etc/yum.repos.d mkdir repo_bak mv *.repo repo_bak/ 下载阿里云repo文件 wget -O /etc/yum.repos.d/C ...

  7. Django之第三方平台QQ授权登录的实现

    接入指南:https://wiki.connect.qq.com/成为开发者 准备工作 成为开发者 首先要有一个开发者账号,https://connect.qq.com/ 登录后点击用户头像,修改个人 ...

  8. 【Azure 应用服务】App Service for Container中配置与ACR(Azure Container Registry)的RABC权限

    问题描述 在使用App Service for container时,在从ACR(Azure Container Registry)中获取应用的镜像时,需要使用对应的权限.默认情况为在ACR中启用Ad ...

  9. 【Azure 应用服务】VS2019发布应用到正在运行的App Service时失败问题的解决

    问题描述 在VS 2019中配置号App Service的Publish Profile后,发布应用出现错误.根据VS 2019中的输出消息可知有文件正在运行中,无法被替换,所以发布失败. 问题解决 ...

  10. C++ mySQL数据库连接池(windows平台)

    C++ MySQL数据库连接池 新手学了C++多线程,看了些资料练手写了C++数据库连接池小项目,自己的源码地址 关键技术点 MySQL数据库编程.单例模式.queue队列容器.C++11多线程编程. ...