【问题标题】:how to make MVW effective with table field length changes?如何通过表字段长度更改使 MVW 有效?
【发布时间】:2018-06-11 23:34:30
【问题描述】:

我有一个如下的 MVW,它是一个现有的。

 CREATE MATERIALIZED VIEW ADS.MVW_AGREEMENT (AGR_ID,_AGR_NBR,SRC_DOC_CD,FNL_DOC_RECPT_DT,AGR_SRC_SYS_CD,UHG_REL_IND)
TABLESPACE ADSDATA
AS
SELECT sfa.agr_id,
       sfa.agr_nbr,
       sfa.src_doc_cd,
       sfa.fnl_doc_recpt_dt,
       sfa.agr_src_sys_cd,
       sfa.uhg_rel_ind
  FROM ADS.agreement sfa;

在协议表中 src_doc_id 是 varchar2(15)。现在,如果我需要将此字段长度更改为 20。当我在表中执行此操作并尝试刷新 MVW 时,我将面临如下错误:

 ORA-12899: value too large for column
"ADS"."MVW_AGREEMENT"."src_doc_cd" (actual: 20, maximum:15)

你能指导我解决这个问题吗?

【问题讨论】:

    标签: oracle oracle12c materialized-views


    【解决方案1】:

    您需要发出alter materialized view 来修改 MV 中的列,与您在基表中修改它的方式完全相同。

    简短的例子(你缺少的是第四行代码,适应你的情况):

    create table t ( x varchar2(10) );
    create materialized view v as select * from t;
    
    alter table t modify ( x varchar2(20) );
    alter materialized view v modify ( x varchar2(20) );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 2012-09-28
      • 2014-06-01
      • 2015-05-27
      相关资源
      最近更新 更多