我有一个应用程序偶尔会传递数据,这导致它在尝试将记录插入 Oracle 11g 数据库的 varchar(2000) 列时失败并出现 ORA-12899 错误。 )在某些情况下,它会尝试插入超过 4000 个字符的字段。)
从长远来看,我会请求更改应用程序以防止这种情况发生,但同时我需要一个短期修复程序以允许保存记录,将数据截断为 2000 个字符。
我已经尝试过“插入前”触发器(将其从 1500 到 1000 个字符截断时效果很好),但我发现数据超过 2000 个字符(即超过列长度)插入仍然失败并出现 ORA-12899。
除了将数据库列更改为 CLOB 之外,还有其他解决方法吗?
最佳答案
在您的插入命令中包含类似于以下代码的 case 语句
insert into test_table
(column1)
values
(
(case when length('ablekkkkkkkkkkkh') > 2000 then substr('ablekkkkkkkkh',1,2000)
else 'ablekkkkkkkkkkkh' end )
);
关于oracle - 我可以使用 Oracle 触发器来强制 varchar 列适应列宽吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38871100/