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

本文讲述了在金蝶云星空二次开发中,插入大量数据后因主键冲突导致业务单据操作报错的问题。作者详细描述了原因分析(主键统一种子)、处理过程(调整种子值并重新编码主键)以及提供其他录入方案如批量导入和后台任务。
摘要由CSDN通过智能技术生成

记一次金蝶云星空二次开发的基础资料,插入了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分批引入、或者做一个后台任务/执行计划进行模拟录入创建资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值