系统运维.数据异常.子单据头出现重复数据行问题排查
【应用场景】
子单据头出现重复数据行,原因不明。
正常情况下,同一个单据,子单据头也只会有一条数据。
目前已知的异常场景有:
<1>单据有人为在数据库删过数据,主表数据(单据头)被删了,但是从表数据(子单据头)未删干净,导致后期录单时,新数据会和旧的脏数据撞FID,导致虽然新增单据时只插入了一行子单据头数据,最后表现就是出现重复数据行。
【排查方法】
下面以销售出库单为例,进行演示。
<1>给子单据头表新增触发器,捕获到子单据头出现重复数据行时,抛数据库异常。
IF EXISTS(SELECT * FROM sys.objects WHERE name='tg_T_SAL_OUTSTOCKFIN_MultiRow' AND type='TR') DROP TRIGGER tg_T_SAL_OUTSTOCKFIN_MultiRow GO CREATE TRIGGER tg_T_SAL_OUTSTOCKFIN_MultiRow ON T_SAL_OUTSTOCKFIN FOR INSERT,UPDATE AS BEGIN --定义变量 DECLARE @FID INT,@FBILLNO NVARCHAR(50),@ERRORMSG NVARCHAR(500) --在inserted表中查询已经插入记录信息 SELECT @FID=Inserted.FID FROM inserted IF @FID IS NOT NULL AND EXISTS(SELECT * FROM T_SAL_OUTSTOCKFIN WHERE FID=@FID) BEGIN SELECT @FBILLNO=ISNULL(FBILLNO,'') FROM T_SAL_OUTSTOCK WHERE FID=@FID SET @ERRORMSG=N'触发器异常=>相同单据的子单据头禁止创建多行!异常单据单号:'+@FBILLNO+'('+CAST(@FID AS nvarchar(20))+')' RAISERROR(@ERRORMSG,11,1) END END GO
<2>当异常代码往子单据头表插入重复数据时,会捕获以下异常。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
系统运维.数据异常.子单据头出现重复数据行问题排查
【应用场景】子单据头出现重复数据行,原因不明。正常情况下,同一个单据,子单据头也只会有一条数据。目前已知的异常场景有:<1>单据有人...
点击下载文档
本文2024-09-23 04:18:09发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164430.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章