记一次金蝶云星空二次开发的基础资料,插入了150万数据后,业务单据操作后台创建基础资料保存报错

发布时间 2024-01-04 18:58:28作者: lanrenka
 

业务说明

二次开发的基础资料,插入了150万数据后,创建资料保存报错。新创建资料的主键在插入的数据里。因为是销售出库单审核就要创建资料,导致销售出库审核时提示插入了重复键值。

官方帖子:

系统运维.数据库.修复种子表(单据) (kingdee.com)

系统运维.数据库.修复种子表(基础资料) (kingdee.com)

 

原因分析

基础资料的主键采取了统一的种子。

 

处理过程:

先找到目前种子表记录的最大值,然后再在这基础上增加一个阈值,让正常业务获取主键不至于冲突,然后需要插入的数据,在这个最大种子值+阈值的基础上开始编码主键,插入数据到基础资料表以后,再将种子表更新为插入数据的最大主键的基础上+1.

/*第一步,查看报错表的当前种子值,所有基础资料,共用一张种子表Z_BAS_ITEM*/
DBCC CHECKIDENT('Z_BAS_ITEM', NORESEED)
--每一次查询,都会发现值在变化
--756961 758623 759287 760151 800875 800962 800987 801034 801066
/*第二步,查看报错的基础资料的表的主键最大值,其中XXXX_T_AS_ProductLibrary为物料表主表,获取主键当前最大值应该查业务表而非种子表*/
DECLARE @FID bigint
SELECT @FID=ISNULL(MAX(FID),100001)+1 FROM XXXX_T_AS_ProductLibrary
SELECT @FID
/*第三步,更新种子值*/
DBCC CHECKIDENT('Z_BAS_ITEM', RESEED, 2321429)

 

 

其他方案

界面录入,量大EXCEL分批引入、或者做一个后台任务/执行计划进行模拟录入创建资料。