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

发布时间:2024年01月04日

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

业务说明

二次开发的基础资料,插入了150万数据后,创建资料保存报错。新创建资料的主键在插入的数据里。因为是销售出库单审核就要创建资料,导致销售出库审核时提示插入了重复键值。
官方帖子:
系统运维.数据库.修复种子表(单据)
系统运维.数据库.修复种子表(基础资料)

原因分析

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

处理过程

先找到目前种子表记录的最大值,然后再在这基础上增加一个阈值,让正常业务获取主键不至于冲突,然后需要插入的数据,在这个最大种子值+阈值的基础上开始编码主键,插入数据到基础资料表以后,再将种子表更新为插入数据的最大主键的基础上+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分批引入、或者做一个后台任务/执行计划进行模拟录入创建资料。

文章来源:https://blog.csdn.net/qq_33881408/article/details/135388754
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。