【发布时间】:2018-07-10 09:58:35
【问题描述】:
我正在尝试使用以下命令更改表以在表 (Oracle 11g) 中添加列 REFERENCE_NO (VARCHAR2(40)) 的默认值:
ALTER TABLE TABLE_NAME MODIFY REFERENCE_NO DEFAULT (TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYDDD')))||'IW'||LPAD(TO_CHAR("SEQ_CG_IW_REF_NO"."NEXTVAL"),9,'0'));
当我执行上述语句时,我收到以下错误:“ORA-01401:插入的值对于列来说太大”。但是,无论序列结果如何,由于 LPAD 和 REFERENCE_NO 是 VARCHAR2(40) 类型,该值应该最大为 16 个字符长度。
但是,当我使用以下语句进行查询时:
select (TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYDDD')))||'IW'||LPAD(TO_CHAR("SEQ_CG_IW_REF_NO"."NEXTVAL"),9,'0'))from dual;
查询的结果是“18031IW000010008”,长度也是 16 个字符。因此,即使默认值的长度为 16 且列长度为 40,我也无法找到 alter 命令失败的原因。提前致谢 `
【问题讨论】: