概述
数据结构的修改步骤,数据表先删除,然后创建。如果数据表是物化视图的源表,则提示依赖关系。
Oracle的实施
-
创建数据表和物化视图
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 -
删除数据表
删除数据表,物化视图不能刷新,可以读取物化视图的数据。
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 -
重建数据表
create table tab_data (id int,c1 int ); insert into tab_data values (2,2); -
刷新物化视图
call dbms_mview.refresh('mv_data', 'C') ; select * from mv_data; ID C1 ---------- ---------- 2 2
KingbaseES实施
-
创建数据表和物化视图
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 行记录) -
删除数据表
drop table tab_data ; 错误: 无法删除 表 tab_data 因为有其它对象倚赖它 描述: 物化视图 mv_data 倚赖于 表 tab_data 提示: 使用 DROP .. CASCADE 把倚赖对象一并删除. -
重建数据表和物化视图
数据表重命名,视图定义自动修改。创建新的物化视图。
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; -
物化视图重命名
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
-
视图定义使用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(); -
删除数据表,物化视图不能刷新,可以读取数据
drop table tab_data; refresh materialized view mv_data; 错误: 关系 "tab_data" 不存在 在位置:SQL 函数 "f_data" 在启动的时候 select * from mv_data; id | c1 ----+---- 1 | 1 (1 行记录) -
重建数据表
create table tab_data (id int,c1 int ); insert into tab_data values (2,2); -
刷新物化视图
refresh materialized view mv_data; select * from mv_data; id | c1 ----+---- 2 | 2 (1 行记录)
总结
- 物化视图的源表,可以在线修改数据表结构,但不能删除对象,而保留物化视图。
- 视图定义使用UDF,可以实现Oracle模式的效果。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




