52 lines
1.6 KiB
MySQL
52 lines
1.6 KiB
MySQL
|
|
/*
|
|||
|
|
修复 2人/3人交互绳基础项目误绑定旧空规则的问题。
|
|||
|
|
- 可重复执行。
|
|||
|
|
- 修正基础项目,确保后续新建场次继承 ROPE_FREESTYLE_WIRE。
|
|||
|
|
- 对尚未开始且没有评分单的既有场次同步修正;已开赛或已有评分历史的场次不自动改写。
|
|||
|
|
*/
|
|||
|
|
SET XACT_ABORT ON;
|
|||
|
|
BEGIN TRANSACTION;
|
|||
|
|
|
|||
|
|
DECLARE @WireRuleId BIGINT = (
|
|||
|
|
SELECT TOP 1 Id
|
|||
|
|
FROM dbo.ScoreRule
|
|||
|
|
WHERE RuleCode=N'ROPE_FREESTYLE_WIRE' AND DeleteMark=0
|
|||
|
|
ORDER BY Id
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
IF @WireRuleId IS NULL
|
|||
|
|
THROW 51012,N'未找到交互绳花样计分规则(ROPE_FREESTYLE_WIRE)。',1;
|
|||
|
|
|
|||
|
|
IF NOT EXISTS (
|
|||
|
|
SELECT 1 FROM dbo.ScoreRuleItem
|
|||
|
|
WHERE ScoreRuleId=@WireRuleId AND DeleteMark=0
|
|||
|
|
)
|
|||
|
|
THROW 51013,N'交互绳花样计分规则没有可用评分项,拒绝更新项目映射。',1;
|
|||
|
|
|
|||
|
|
UPDATE dbo.Project
|
|||
|
|
SET ScoreRuleId=@WireRuleId,
|
|||
|
|
UpdatedUserId=1000,
|
|||
|
|
UpdatedTime=SYSUTCDATETIME()
|
|||
|
|
WHERE Name IN (N'2人交互绳',N'3人交互绳')
|
|||
|
|
AND DeleteMark=0
|
|||
|
|
AND ISNULL(ScoreRuleId,0)<>@WireRuleId;
|
|||
|
|
|
|||
|
|
UPDATE s
|
|||
|
|
SET ScoreRuleId=@WireRuleId,
|
|||
|
|
Version=Version+1,
|
|||
|
|
UpdatedUserId=1000,
|
|||
|
|
UpdatedTime=SYSUTCDATETIME()
|
|||
|
|
FROM dbo.EventSession s
|
|||
|
|
JOIN dbo.EventProject ep ON ep.Id=s.EventProjectId AND ep.DeleteMark=0
|
|||
|
|
JOIN dbo.Project p ON p.Id=ep.ProjectId AND p.DeleteMark=0
|
|||
|
|
WHERE p.Name IN (N'2人交互绳',N'3人交互绳')
|
|||
|
|
AND s.DeleteMark=0
|
|||
|
|
AND s.SessionStatus IN (0,10,20)
|
|||
|
|
AND s.ScoreRuleId<>@WireRuleId
|
|||
|
|
AND NOT EXISTS (
|
|||
|
|
SELECT 1 FROM dbo.EventJudgeScoreSheet sheet
|
|||
|
|
WHERE sheet.SessionId=s.Id AND sheet.DeleteMark=0
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
COMMIT TRANSACTION;
|