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

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802969.html?templateId=1718516

问题现象

某客户在使用触发器将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;
posted @ 2024-12-25 18:06  YashanDB  阅读(3)  评论(0编辑  收藏  举报