E8-公共选择框相关的表

起因

昨天同事和我说,要在一个表单里加一组可选项。于是我去了公共选择框维护。这时候才发了这么个问题,前几天我在本机的测试环境里做的流程,导入到我们的生产环境里,表单里所用到的共公选择框的选项都在,在表单里是可用的,但是在公共选择框维护里却没有涉及到的公共选择框。回到流程的表单管理里,相应的字段只显示公共选择框,不显示选择框的类型了。

先把为什么所用到的公共选择框,在公共选择框维护里已经没有了,然而表单里还可用的问题放一边,不去研究它,看来有必要先把遗漏的公共选择框维护补齐。

经过

目标

想把公共选择框维护里的信息补齐,首先想到的方法是到公共选择框里把遗漏的类型都补齐了。考虑到在操作的过程中,很大的可能会发生由于录入顺序不一样,导致ID不一致引发关联出错的问题。

方案

那么,是不是在两个环境中,公共选择框维护里,数据不冲突的情况下,直接到数据表里导数据过来应该会安全一些。

执行

知识点一、需要处理哪些表

然而,在网上流传的E8表结构里找了一下,没有找到提及公共选择框的表。于是,用SQL Server Profiler做跟踪,发现了这么几张表。

mode_selectitempage

mode_selectitempagedetail

selectItemLog

从表名上来看,mode_selectitempage、mode_selectitempagedetail应该是记录的公共选择框的信息,是必须的,selectItemLog应该是记录的调整信息。先不去分析表结构都是干嘛的,先把本机测试环境和生产环境的数据做一下同步。

知识点二、数据怎么去同步

直接在SQL Server Management Studio导入数据,但要注意,要先把测试环境的表,导入到生产环境里,并且不能用原表名,先不说遇到相同的数据,导入程序会怎么处理,首先导入程序会在验证步骤报错如下

- 正在验证 (错误)
消息
错误 0xc0202049: 数据流任务 1: 无法在只读列“id”中插入数据。
 (SQL Server 导入和导出向导)
错误 0xc0202045: 数据流任务 1: 验证列元数据失败。
 (SQL Server 导入和导出向导)
错误 0xc004706b: 数据流任务 1: “组件“目标 - mode_selectitempage”(46)”验证失败,返回的验证状态为“VS_ISBROKEN”。
 (SQL Server 导入和导出向导)
错误 0xc004700c: 数据流任务 1: 一个或多个组件未能通过验证。
 (SQL Server 导入和导出向导)
错误 0xc0024107: 数据流任务 1: 任务验证期间出错。
 (SQL Server 导入和导出向导)

 大意上就是mode_selectitempage表的id列是只读的,不允许写入值。解决办法是把测试环境的表导入到生产环境数据库里的时候,重命个名。然后再写SQL语句去导入。但同样要处理这个ID字段不允许插入值的问题。

仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'mode_selectitempage'中的标识列指定显式值。

拿其中一个表举例,写一下语句

-- 设置mode_selectitempage的IDENTITY_INSERT的值是ON

set IDENTITY_INSERT mode_selectitempage ON

-- 把导过来的表里,ID不在生产环境的表里的的,导到生产环境表里。

-- 这里必须写列名。不写列名,设置了IDENTITY_INSERT为ON也不好使。

insert    into    mode_selectitempage 
        (id, selectitemname, selectitemdesc, creater,
        createdate, createtime, appid, uuid, 
        operatetime, formids        )
select    id, selectitemname, selectitemdesc, creater,
        createdate, createtime, appid, uuid, 
        operatetime, formids
from    mode_selectitempage2
where    id not in (    select    id
                    from    mode_selectitempage)

-- 把mode_selectitempage表的IDENTITY_INSERT的值改回OFF。

set IDENTITY_INSERT mode_selectitempage OFF

把数据同步之后,生产环境里的公共选择框补齐了。

结果

处理本次问题收获以下知识点:

1、在E8里,从一个系统导出流程,导入到另一个系统里的时候,相关的资源不会一并导入,需要手工去维护。

2、认识了几张和公共选择框有关的表。

3、在向有自增字段的数据表里导入数据前,要先处理该表的IDENTITY_INSERT属性后再导入,并不是拿它们束手无策的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rarenmen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值