37 lines
1.0 KiB
Transact-SQL
37 lines
1.0 KiB
Transact-SQL
/*
|
||
修复集体项目成绩写入: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;
|