如何使表格字段长度更改使MVW有效?

时间:2018-01-02 08:47:49

标签: oracle oracle12c materialized-views

我有一个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)

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

1 个答案:

答案 0 :(得分:0)

您需要发出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) );