最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

ECOLOGY OA如何在数据库修改一个字段的类型

底层代码 bron1984 5355浏览

概述

很多项目人员在实施过程中会遇到这样尴尬的情况:流程的字段已经建好,且有流程已有数据存在,但是现在要换流程中的字段类型。根据公司先有的产品,必须先把这个字段清空,才能对该字段进行编辑删除,可是这样的话,历史数据就不能保存了。

基于上述情况下,写了该文本便于项目人员通过数据库,自己修改流程的字段类型,不影响历史数据的使用。

表结构

说到字段类型,会用到的表有:workflow_billfield 、htmllabelindex 、workflow_bill 、workflow_browserurl 、formtable_main_*。其中最关键的表为workflow_billfield这张表,下面介绍一下这张表的表结构:

表名称: workflow_billfield
字段名称 描述 备注
Id 主键 字段id
Billid 表单id 表示该字段所属表单的ID。外键,对应的为workflow_bill该表的主键
Fieldname 表单数据库名称 表示该字段字数据库表中的列名称
Fieldlabel 字段显示名 外键,对应的为htmllabelindex表中的id
Fielddbtype 字段数据库类型 表示该字段所在表的类型
Fieldhtmltype 字段变现形式 1:单行文本框

2:多行文本框

3:浏览按钮

4:check框

5:选择框

6:附件上传

7:特殊字段

type 类型 当fieldhtmltype = 1 时:

1:文本

2:整数

3:浮点数

4:金额转换

5:金额千分位

当fieldhtmltype = 2时:

1:一般格式

2:html编辑器

当fieldhtmltype = 3时:

表示为浏览框,具体浏览类型,可以根据type到workflow_browserurl表中进行查询,type值对应的即为该表的id值

161 : 自定义单选

162 : 自定义多选

附表1:

字段表现形式 Fielddbtype Fieldhtmltype type
单行文本框 文本 varchar(x)

x代表字段长度,最大为999

1 1
整数 int 1 2
浮点数 decimal(15,x)

x代表小数位,1~4

1 3
金额转换 decimal(15,2) 1 4
金额千分位 varchar(30) 1 5
多行文本框 非HTML text 2 1
是HTML text 2 2
浏览按钮 一般 与workflow_browserurl中的fielddbtype对应 3 与workflow_browserurl中的id对应
自定义单选 browser.x

x代表自定义浏览框标识

3 161
自定义多选 browser.x

x代表自定义浏览框标识

3 162
Check框 char(1) 4 1
选择框 int 5 1

介绍一下如何查询浏览框类型,查询workflow_browserurl这张表的结果集。

如果对表结果比较熟悉的话,可以根据该结果集中tablename列来知道该浏览框的类型,不知道也没关系啦。

在查询语句的结果集中找到labelid这一列,然后根据labelid去HtmlabelIndex表中去查询其对应的中文名:select * from htmllabelindex where id = ?

修改字段类型步骤

修改字段类型,往往需要以下步骤(下面将以把字段类型修改成单人力资源浏览框为例):

  1. 修改该字段在流程表单中的显示类型:
  2. 首先找到该字段的fieldid(如:6545)和字段名称(如:xgry),和字段对应的表单id(formid = 3)
  3. 从workflow_browserurl表中找到人力资源浏览框对应的id(1)和fielddbtype (int)
  4. 根据附表1所示,可以得出修改的SQL为:

UPDATE WORKFLOW_BILLFIELD SET Fielddbtype = ‘int’, Fieldhtmltype = ‘3’,type= ‘1’ where id = 6545

  1. 修改该字段所在表中的类型
  2. 在该表中新建一个新的字段,用于临时存放历史数据,由于是单人力资源浏览框,数据库字段类型应为INT型

ALTER TABLE FORMTABLE_MAIN_3 ADD TEMPFIELD INT NULL

  1. 将历史数据保存到临时字段中

Update SET FORMTABLE_MAIN_3 SET TEMPFIELD = XGRY

  1. 然后删除当前字段,重新添加

ALTER TABLE FORMTABLE_MAIN_3 DROP COLUMN XGRY

ALTER TABLE FORMTABLE_MAIN_3 ADD XGRY INT NULL

  1. 再将历史数据还原,删除临时字段

UPDATE FORMTABLE_MAIN_3 SET XGRY = TEMPFIELD

ALTER TABLE FORMTABLE_MAIN_3 DROP COLUMN TEMPFIELD

以上步骤,是修改一个字段类型的完成步骤。但是实际中往往有很多情况下不需要如此复杂,比如单行文本长度字段从50变100,这个可能就可以直接修改字段类型了;还有的时候,历史数据根本无法保存下来,比如说原文本字段,现在要改成整数,这种情况下就无法保留历史数据了。

转载请注明:赫非域 » ECOLOGY OA如何在数据库修改一个字段的类型