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

打印 上一主题 下一主题

主题 1032|帖子 1032|积分 3096

本文内容来自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是否存在此题目:
  1. drop trigger trigger1;
  2. drop table A;
  3. drop table B;
  4. create table A(tid number primary key not null, c1 varchar(4000 char));
  5. create table B(tid number primary key not null, c2 varchar(4000 char));
  6. create or replace trigger trigger1 after insert on A for each row
  7. begin
  8.   insert into B values(:new.tid,:new.c1);
  9. end;
  10. /
  11. insert into A values(1,'abcd');
  12. commit;
  13. select * from B;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表