写点什么

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

作者:YashanDB
  • 2024-12-26
    广东
  • 本文字数:465 字

    阅读完需:约 2 分钟

本文内容来自 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;
复制代码


发布于: 刚刚阅读数: 4
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】通过触发器复制varchar(4000 char)列的数据导致乱码_数据库_YashanDB_InfoQ写作社区