有一个表,我希望只在其中某个标志字段改变的时候才刷新mv,只要这个标志字段不变,其他字段无论如何变化,这个mv都不需要刷新,mv log也不要生成记录。
不知道filter column是不是为了实现这个而设计的,没找到多少相关资料。
举个例子,
表test:
create table TEST
(
VAL1 NUMBER(4),
ID NUMBER(3) not null,
VAL2 NUMBER(3)
)
mv log:
create materialized view log on test;
mv:
create materialized view MV$TEST
refresh fast on demand
as
select id,val1,val2 from test;
执行
insert into test(id,val1,val2)
values(myseq.nextval,dbms_random.value(1,100),dbms_random.value(1,500));
commit;
这时mv log生成记录。
执行
update test set val1=dbms_random.value(1,100)
where id=24;
commit;
这时mv log也要能生成记录。
执行
update test set val2=dbms_random.value(1,100)
where id=24;
commit;
这时希望mv log不要生成记录。
不知道filter column是不是为了实现这个而设计的,没找到多少相关资料。
举个例子,
表test:
create table TEST
(
VAL1 NUMBER(4),
ID NUMBER(3) not null,
VAL2 NUMBER(3)
)
mv log:
create materialized view log on test;
mv:
create materialized view MV$TEST
refresh fast on demand
as
select id,val1,val2 from test;
执行
insert into test(id,val1,val2)
values(myseq.nextval,dbms_random.value(1,100),dbms_random.value(1,500));
commit;
这时mv log生成记录。
执行
update test set val1=dbms_random.value(1,100)
where id=24;
commit;
这时mv log也要能生成记录。
执行
update test set val2=dbms_random.value(1,100)
where id=24;
commit;
这时希望mv log不要生成记录。
解决方案 »
- database link ORA-01017: invalid username/password;logon denied
- oracle 可以这样异常处理吗
- 崩溃了,这个异常到底怎么解决,网上查了好久都没查到答案
- 如何建立这样一个触发器?,当插入一条记录进来以后,自动将表的一个字段置为0
- 一条简单的sql语句
- oracle中的聚合问题
- 谁有 redhat linux 下安装 oracle 9i 的文档
- 没有发现客户端与网络组件,急急急!!!
- 請問哪里有oracle9i上手的書down
- vc用oo4o怎么与oracle数据库相连接?
- oracle存储过程返回结果集的两种写法有什么区别
- Oracle中Select 取数据问题,非常急,请告诉赐教
你可以尝试用trigger来另外更新
不太想用trigger,因为将来分析表和业务表可能要分到两个库中。
没看明白oracle的那个官方文档,不知道
CREATE MATERIALIZED VIEW LOG ON table WITH column是不是为这个而设计的?