我有一个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)
你能指导我解决这个问题吗?
答案 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) );