关于物化刷新视图创建以及过程遇到的错误分析记录

[size=small][align=center][b][color=red]关于物化刷新视图创建以及过程遇到的一些错误分析记录(偏重于增量刷新视图)[/color][/b][/align][/size]

[color=red][b]1、视图能添加多个约束吗?[/b][/color]
普通视图在创建过程中,不能设置多个约束 即 with read only和with check option只能二选一,若创建多个则不通过
[color=red][b]2、物化视图日志能在右侧目录右键drop吗?[/b][/color]
可以,但是再次创建视图日志时则会报已存在,所以必须通过手动sql删除,如下所示
drop materialized view log on teacher

[color=red][b]3、ORA-12006:a materialized view log for "xxxx"."xxx" does not record the primary key;[/b][/color]
这个问题纠结了好久才找到答案,真的是都快急的流鼻血了,在此记录一下
这个是因为 我们在建立物化增量刷新视图之前创建的物化视图日志是基于rowid,如下所示
create materialized view log on teacher with rowid;

而我们创建物化视图sql如下【错误示例】
create materialized view mv_teacher
refresh fast
as
select r.rowid ,r.name name1 from teacher r

该视图是默认是基于 primary key来建立的 所以不能创建成功,并且提示了以上的错误,那么我们应该怎么写才能不报错呢?,如下所示
create materialized view mv_teacher5
refresh fast with rowid -- 注意此块需要加with rowid
as
select r.rowid rr,r.*from teacher r--需要存在rowid,并且得有别名

注意上面的sql 加的注释,是需要注意的点,要with rowid,这样我们建立的视图则是基于rowid,而且需要给rowid起别名,否则依然创建不成功

那么既然有基于rowid的视图,其实也有基于primary key 的增量刷新视图
定义方法如下

create materialized view log on teacher with primary key;--创建视图日志

create materialized view mv_teacher8
refresh fast [ with primary key] --此处可省略,因为该视图默认就是基于主键
as
select * from teacher



以上是关于物化增量刷新视图的一些问题,后期遇到继续补充
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值