凭证生成报错:不能在具有唯一索引“IDX_FLEX工TEKUNIQUE”的对象“dbo.T_BD_FLEXITEMDETAILV”中插入重复键的行
问题描述:
解决方案:
重建计算列可以解决该问题,重建方法有两个:
方法一:通过前台加一个核算维度,提交审核(会重建计算列),再反审核删除刚刚加的维度即可。
方法二:通过脚本重建,重建脚本如下:
DECLARE @DEFINCOL NVARCHAR(4000)='' DECLARE @COLNAME NVARCHAR(100)='' DECLARE FLEX_CUR CURSOR FOR SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('T_BD_FLEXITEMDETAILV') AND NAME NOT IN('FID','FOPCODE','FCALCOL') ORDER BY COLID; --收集列名形成新列的定义字串 OPEN FLEX_CUR; FETCH NEXT FROM FLEX_CUR INTO @COLNAME; WHILE @@FETCH_STATUS = 0 BEGIN IF LEN(@DEFINCOL)=0 SET @DEFINCOL = 'RTRIM(CONVERT(VARCHAR(80),'+@COLNAME+'))' ELSE SET @DEFINCOL = @DEFINCOL+'+''_''+RTRIM(CONVERT(VARCHAR(80),'+@COLNAME+'))' FETCH NEXT FROM FLEX_CUR INTO @COLNAME; END; CLOSE FLEX_CUR; DEALLOCATE FLEX_CUR; --检查FCALCOL列 IF EXISTS(SELECT * FROM SYSCOLUMNS WHERE ID=OBJECT_ID('T_BD_FLEXITEMDETAILV') AND NAME ='FCALCOL') BEGIN --检查索引 IF EXISTS(SELECT * FROM SYSINDEXES WHERE ID=OBJECT_ID('T_BD_FLEXITEMDETAILV') AND NAME='IDX_FLEXITEMUNIQUE') --删除原有索引 DROP INDEX IDX_FLEXITEMUNIQUE ON T_BD_FLEXITEMDETAILV; --删除原有列 ALTER TABLE T_BD_FLEXITEMDETAILV DROP COLUMN FCALCOL; END; --重建列 EXEC('ALTER TABLE T_BD_FLEXITEMDETAILV ADD FCALCOL AS ('+@DEFINCOL+')'); --重建索引(当存在历史重复记录时,仅创建普通索引) IF EXISTS(SELECT * FROM (SELECT MIN(FID) FID1,MAX(FID) FID2 FROM T_BD_FLEXITEMDETAILV GROUP BY FCALCOL) TM WHERE FID1<>FID2) BEGIN --重建普通索引 EXEC('CREATE INDEX IDX_FLEXITEMUNIQUE ON T_BD_FLEXITEMDETAILV(FCALCOL)'); END ELSE BEGIN --重建唯一索引 EXEC('CREATE UNIQUE INDEX IDX_FLEXITEMUNIQUE ON T_BD_FLEXITEMDETAILV(FCALCOL)'); END;
凭证生成报错:不能在具有唯一索引“IDX_FLEX工TEKUNIQUE”的对象“dbo.T_BD_FLEXITEMDETAILV”中插入重复键的行
问题描述:解决方案:重建计算列可以解决该问题,重建方法有两个:方法一:通过前台加一个核算维度,提交审核(会重建计算列),再反审核删...
点击下载文档
上一篇:单据汇总生成总账凭证分录排序说明下一篇:智能会计平台-应收账款报表对账
本文2024-09-23 01:38:41发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-147239.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章