From 7b26c871270f3c0c84057809d066c70ca7534415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=A2=93=E5=BD=AD?= Date: Tue, 13 Oct 2026 14:57:42 +0800 Subject: [PATCH] =?UTF-8?q?sql=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 二期需求/dbo.sql | 13 ++++++++++++- 二期需求/上线/dbo_insert.sql | 13 ++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/二期需求/dbo.sql b/二期需求/dbo.sql index cdccddf..b2965d9 100644 --- a/二期需求/dbo.sql +++ b/二期需求/dbo.sql @@ -1354,7 +1354,18 @@ BEGIN TRY IF EXISTS(SELECT 1 FROM #ItemSeed s JOIN #RuleMap m ON m.SourceId=s.SourceRuleId WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRuleItem i WHERE i.ScoreRuleId=m.TargetId AND i.JudgeRoleType=s.JudgeRoleType AND i.ItemCode=s.ItemCode AND i.DeleteMark=s.DeleteMark)) THROW 51004,N'计分规则明细种子ID被占用且业务键不存在,无法安全初始化。',1; - -- 若重复执行初始化脚本,物理删除已不在最终种子中的旧交互绳难度项。 + -- 若重复执行初始化脚本,先保留历史评分快照并解除规则项引用,再物理删除旧交互绳难度项。 + IF OBJECT_ID(N'dbo.EventJudgeScoreDetail',N'U') IS NOT NULL + BEGIN + UPDATE detail + SET ScoreRuleItemId=NULL,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME() + FROM dbo.EventJudgeScoreDetail detail + JOIN dbo.ScoreRuleItem item ON item.Id=detail.ScoreRuleItemId + JOIN #RuleMap map ON map.TargetId=item.ScoreRuleId AND map.SourceId IN (3500,3600) + WHERE item.JudgeRoleType IN (N'DJ',N'DT') + AND item.ItemType=1 + AND NOT EXISTS(SELECT 1 FROM #ItemSeed seed WHERE seed.SourceRuleId=map.SourceId AND seed.JudgeRoleType=item.JudgeRoleType AND seed.ItemCode=item.ItemCode); + END; DELETE i FROM dbo.ScoreRuleItem i JOIN #RuleMap m ON m.TargetId=i.ScoreRuleId AND m.SourceId IN (3500,3600) diff --git a/二期需求/上线/dbo_insert.sql b/二期需求/上线/dbo_insert.sql index 0b6150f..e36dd0e 100644 --- a/二期需求/上线/dbo_insert.sql +++ b/二期需求/上线/dbo_insert.sql @@ -571,7 +571,18 @@ BEGIN TRY IF EXISTS(SELECT 1 FROM #ItemSeed s JOIN #RuleMap m ON m.SourceId=s.SourceRuleId WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRuleItem i WHERE i.ScoreRuleId=m.TargetId AND i.JudgeRoleType=s.JudgeRoleType AND i.ItemCode=s.ItemCode AND i.DeleteMark=s.DeleteMark)) THROW 51004,N'计分规则明细种子ID被占用且业务键不存在,无法安全初始化。',1; - -- 若重复执行初始化脚本,物理删除已不在最终种子中的旧交互绳难度项。 + -- 若重复执行初始化脚本,先保留历史评分快照并解除规则项引用,再物理删除旧交互绳难度项。 + IF OBJECT_ID(N'dbo.EventJudgeScoreDetail',N'U') IS NOT NULL + BEGIN + UPDATE detail + SET ScoreRuleItemId=NULL,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME() + FROM dbo.EventJudgeScoreDetail detail + JOIN dbo.ScoreRuleItem item ON item.Id=detail.ScoreRuleItemId + JOIN #RuleMap map ON map.TargetId=item.ScoreRuleId AND map.SourceId IN (3500,3600) + WHERE item.JudgeRoleType IN (N'DJ',N'DT') + AND item.ItemType=1 + AND NOT EXISTS(SELECT 1 FROM #ItemSeed seed WHERE seed.SourceRuleId=map.SourceId AND seed.JudgeRoleType=item.JudgeRoleType AND seed.ItemCode=item.ItemCode); + END; DELETE i FROM dbo.ScoreRuleItem i JOIN #RuleMap m ON m.TargetId=i.ScoreRuleId AND m.SourceId IN (3500,3600)