【物化视图】使用可更新的物化视图。

创建物化视图是默认是不可更新的,要创建可以更新的物化视图必须加上for update 关键字。
yang@rac1>create table t (id number ,name varchar2(30),val number);
Table created.
yang@rac1>create materialized view log on t with rowid,sequence (id,name) including  new values;
Materialized view log created.
yang@rac1>create materialized view mv_t_id refresh fast as select id ,count(1) from t group by id;
Materialized view created.
yang@rac1>insert into t values(1,'a',1);
1 row created.
yang@rac1>insert into t values(2,'b',2);
1 row created.
yang@rac1>insert into t values(3,'lily',3);
1 row created.
yang@rac1>insert into t values(4,'yang',4);
1 row created.
yang@rac1>select * from mv_t_id;

        ID   COUNT(1)
---------- ----------
         1          1
         2          1
         3          1
         5          1
         6          2
向物化视图中插入数据。
yang@rac1>insert into mv_t_id values (7,1);
insert into mv_t_id values (7,1)
            *
ERROR at line 1:
ORA-01732: data manipulation operation not legal on this view
-删除物化日志之后再次尝试插入,仍然报错。
yang@rac1>drop materialized view log on t;
Materialized view log dropped.

yang@rac1>insert into mv_t_id values (7,1);
insert into mv_t_id values (7,1)
            *
ERROR at line 1:
ORA-01732: data manipulation operation not legal on this view
创建可更新的物化视图:
建立测试表并创建物化日志。
yang@rac1>create table t as select object_id id ,object_name name from user_objects;
Table created.
yang@rac1>create materialized view log on t with rowid;
Materialized view log created.
                 
yang@rac1>create materialized view mv_t refresh fast with rowid for update as
  2  select * from t;
Materialized view created.
yang@rac1>select * from mv_t;

        ID NAME
---------- ---------------
    130864 YANG_SEQ
    132031 YANG_A
    132032 SYS_C0066382
    132033 YANG_B
    132034 SYS_C0066383
    132035 FACT
    132036 MLOG$_YANG_A
    132037 MLOG$_YANG_B
    132038 MLOG$_FACT
    132039 T
    131949 YANG_ROWID
    131951 YANG_PK
    131952 SYS_C0066303
    131955 YANG_OBJECT
    131956 YANG_OID
    131957 SYS_C0066304
    132018 YANG_C
    132017 MV_CAPABILITIES_TABLE
    132030 MLOG$_YANG_PK
    132027 MLOG$_YANG_ROWID
           LINKORACL
           LINKYANG

22 rows selected.
yang@rac1>insert into mv_t values (1,'yang');
1 row created.
yang@rac1>select * from mv_t;

        ID NAME
---------- ---------------
    130864 YANG_SEQ
    132031 YANG_A
    132032 SYS_C0066382
    132033 YANG_B
    132034 SYS_C0066383
    132035 FACT
    132036 MLOG$_YANG_A
    132037 MLOG$_YANG_B
    132038 MLOG$_FACT
    132039 T
    131949 YANG_ROWID
    131951 YANG_PK
    131952 SYS_C0066303
    131955 YANG_OBJECT
    131956 YANG_OID
    131957 SYS_C0066304
    132018 YANG_C
    132017 MV_CAPABILITIES_TABLE
    132030 MLOG$_YANG_PK
    132027 MLOG$_YANG_ROWID
           LINKORACL
           LINKYANG
         1 yang
23 rows selected.
查看物化日志,没有关于更新的记录。
yang@rac1>select * from mlog$_t;
no rows selected

时间: 2024-10-29 12:25:03

【物化视图】使用可更新的物化视图。的相关文章

可更新的物化视图

快速刷新 可更新的物化视图 SQL> exec dbms_mview.refresh('MV_T','F'); BEGIN dbms_mview.refresh('MV_T','F'); END; * ERROR at line 1: ORA-12034: materialized view log on "JEANRON"."T" younger than last refresh ORA-06512: at "SYS.DBMS_SNAPSHOT&

vs2012-MVC4使用VS2012模版生成视图 更新模型之后 生成的视图会随之更新吗?

问题描述 MVC4使用VS2012模版生成视图 更新模型之后 生成的视图会随之更新吗? using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcApplication2.Models { public class Person { public int Id { get; set; } public string Name { get; set; } pub

数据库 mysql 视图-MYsql,更新或插入创建视图的源表,则视图的数据更新需要时间吗?

问题描述 MYsql,更新或插入创建视图的源表,则视图的数据更新需要时间吗? 使用的工具是Navicat for MySql, 主要问题是:我要同步七张表数据,然后根据这七张表创建了一个视图A,然后根据视图A去刷新表B.视图A与表B,数据结构是一致的. 实现过程是用存储过程,先同步七张表,然后直接用视图A去刷新表B.刷新是指使表B与视图A,数据一模一样. 在测试的过程中,当向七张表同步4万条数据时候,发现表B少同步了:六百多条数据. 我猜测是在同步完七张表数据之后,更新视图A需要一定的时间,在视

利用excel视图管理器添加多个视图动画教程

<Excel2003入门动画教程29.利用视图管理器添加多个视图>. 演示动画 操作步骤 如果我们有一个保存了大量数据的Excel表格,根据使用对象的不同,常需要将其中不同部分的数据打印出来.通常的做法是,先将不需要打印的列隐藏起来,然后再打印.由于这样的"对象"众多,每次都要隐藏.打印.显示.再隐藏.再打印--非常麻烦.其实,我们可能用"视图管理器"来实现这种要求: 执行"视图→视图管理器"命令,打开"视图管理器"

vc++ 多文档视图结构-VC多文档视图 error C3861: &amp;amp;quot;AfxGetFileTitle&amp;amp;quot;找不到标识符

问题描述 VC多文档视图 error C3861: "AfxGetFileTitle"找不到标识符 我在做的一个多文档视图的工程里处理关闭视图之后的处理文件的相关操作,就是关闭试图后程序出现提示"是否保存对****的更改?"的对话框,这个对话框是在SaveModified()函数中处理出现的,我需要对用户选择点击"是"或者"否"以及"取消"三个按钮后在重载的SaveModified中做处理,此函数中的默认处

Android自定义视图一:扩展现有的视图,添加新的XML属性

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 简介 这个系列详细的介绍了如何穿件Android自定义视图.主要涉及的内容有如何绘制内容,layout和measure的原理,如何继承实现view group以及如何给其子视图添加动画.第一篇

tablelayout-使用代码把视图布局设置成一列(视图在表格行里)

问题描述 使用代码把视图布局设置成一列(视图在表格行里) 在xml文件中有一个tablelayout布局.在这个布局里也使用代码添加一些行.如何设置能把视图布局排成一列呢? 在XML文件中我是这样设置的: android:layout_column="3" 那么如何用代码实现呢?比如TextView视图. 解决方案 TextView tv = new TextView(this); tv.setLayoutParams(new TableRow.LayoutParams(3)); 解决

3d-谷歌地球从高空视图逐渐的变换为地坪视图是怎么实现的

问题描述 谷歌地球从高空视图逐渐的变换为地坪视图是怎么实现的 请问各位大侠,当谷歌地球逐渐放大到一定程度时,视图逐渐的变为类似于斜向下的视图,这种实现的效果,他的原理是什么? 解决方案 视图变换

物化视图导出导入可能导致物化视图日志的失效

SQL> create user yang identified by yang;用户已创建.已用时间:  00: 00: 00.10SQL> grant resource,connect to yang;授权成功.已用时间:  00: 00: 00.01SQL> grant create meterialized view to yang;grant create meterialized view to yang      *第 1 行出现错误: ORA-00990: 权限缺失或无效