目录
一、问题
今天我在达梦数据库中,想在一个表里,将varchar类型字段改为text类型,结果发生了报错,如下:
那么为什么会发生数据类型变更无效,这是因为达梦数据库的内部机制不支持直接变更表结构的字段类型信息。
二、解决方法
可以通过临时字段的方式来解决。
第一步:创建临时字段
ALTER TABLE "WORKER"."WORKFLOW_TRANSITION" ADD config_value_tmp text;
第二步:然后将你要变类型的字段的内容赋值给临时字段 config_value_tmp
UPDATE "WORKER"."WORKFLOW_TRANSITION" SET config_value_tmp=trim(CONDITION_EXPRESSION);
第三步:复制字段内容成功后执行查询命令来看一下字段内容是否已经复制过去了
select * from "WORKER"."WORKFLOW_TRANSITION";
第四步:删除原始字段WORKFLOW_TRANSITION然后将新建的临时字段 config_value_tmp 重命名为 WORKFLOW_TRANSITION
ALTER TABLE "WORKER"."WORKFLOW_TRANSITION" DROP COLUMN CONDITION_EXPRESSION;
ALTER TABLE "WORKER"."WORKFLOW_TRANSITION" RENAME COLUMN config_value_tmp TO CONDITION_EXPRESSION;
执行完成之后就可以看到表结果已经是最新的表结构了!!!