/* 修复集体项目成绩写入:EventResult 会为队内每名运动员各保留一条成绩, 因此活动成绩唯一键应为“出场记录 + 报名人员”,不能只约束出场记录。 本脚本可重复执行。 */ SET NOCOUNT ON; SET XACT_ABORT ON; SET ANSI_NULLS ON; SET ANSI_PADDING ON; SET ANSI_WARNINGS ON; SET ARITHABORT ON; SET CONCAT_NULL_YIELDS_NULL ON; SET QUOTED_IDENTIFIER ON; SET NUMERIC_ROUNDABORT OFF; BEGIN TRY BEGIN TRANSACTION; IF EXISTS ( SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.EventResult') AND name = N'UX_EventResult_SessionEntry_Active' ) DROP INDEX [UX_EventResult_SessionEntry_Active] ON dbo.[EventResult]; CREATE UNIQUE NONCLUSTERED INDEX [UX_EventResult_SessionEntry_Active] ON dbo.[EventResult]([SessionEntryId], [RegistrationPersonId]) WHERE [SessionEntryId] IS NOT NULL AND [DeleteMark] = 0; COMMIT TRANSACTION; END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; THROW; END CATCH;