【YashanDB 知识库】通过触发器复制 varchar(4000 char) 列的数据导致乱码

问题现象

某客户在使用触发器将 varchar(4000 char)列的数据从表 A 复制到表 B 时,表 B 上列的数据与 A 上对应列的数据不同且为乱码。

如下截图为 A 的数据及使用触发器复制到 B 的数据:

问题的风险及影响

数据正确性无法保证。

问题影响的版本

所有的 YashanDB 版本

问题发生原因

YashanDB 在处理触发器场景下的 varchar(4000 char)列的数据复制时,处理机制有误。

解决方法及规避方式

将列的长度修改为 varchar(2000 char)或者更小。

问题分析和处理过程

使用如下的 SQL 可以验证 YashanDB 是否存在此问题:

drop trigger trigger1;
drop table A;
drop table B;
create table A(tid number primary key not null, c1 varchar(4000 char));
create table B(tid number primary key not null, c2 varchar(4000 char));
create or replace trigger trigger1 after insert on A for each row
begin
  insert into B values(:new.tid,:new.c1);
end;
/
insert into A values(1,'abcd');
commit;
select * from B;
复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值