essa trigger faz contagem de ranking de PK e Hero, que conta os kills com mais precisão.
Sem mais enrolação:
♦ Versão atual do Script:
- TRIGGER: 1.0.0
♦ ALTER TABLES
♦ TRIGGER - RankingHeroPKUSE [MUOnline]
GO
ALTER TABLE [dbo].[Character]
ADD [PkCountDay] [INT] DEFAULT ((0)) NOT NULL
GO
ALTER TABLE [dbo].[Character]
ADD [PkCountWeek] [INT] DEFAULT ((0)) NOT NULL
GO
ALTER TABLE [dbo].[Character]
ADD [PkCountMonth] [INT] DEFAULT ((0)) NOT NULL
GO
ALTER TABLE [dbo].[Character]
ADD [PkCountTotal] [INT] DEFAULT ((0)) NOT NULL
GO
ALTER TABLE [dbo].[Character]
ADD [HeroCount] [INT] DEFAULT ((0)) NOT NULL
GO
ALTER TABLE [dbo].[Character]
ADD [HeroCountDay] [INT] DEFAULT ((0)) NOT NULL
GO
ALTER TABLE [dbo].[Character]
ADD [HeroCountWeek] [INT] DEFAULT ((0)) NOT NULL
GO
ALTER TABLE [dbo].[Character]
ADD [HeroCountMonth] [INT] DEFAULT ((0)) NOT NULL
GO
Criem as Jobs manualmente igual ranking de resets diário, semanal e mensal... Precisam ser zerados./*
| @author - Renato Valer
| @version - 1.0.0
| @last update - 2016/04/30 - 11h53min
| @warning: Não me responsabilizo por uso incorreto e possíveis deadlocks. Use por sua conta e risco.
*/
USE MuOnline
GO
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'RankingHeroPK' AND type = 'TR')
DROP TRIGGER [RankingHeroPK]
GO
CREATE TRIGGER [dbo].[RankingHeroPK]
ON [dbo].[Character]
AFTER UPDATE AS
SET NOCOUNT ON
IF UPDATE(PkCount)
BEGIN SET NOCOUNT ON;
DECLARE @Name varchar(12);
DECLARE @PKOld int;
DECLARE @PkNew int;
DECLARE @DIF int;
SELECT @Name = Name FROM INSERTED;
SELECT @PKOld = PkCount FROM DELETED;
SELECT @PKNew = PkCount FROM INSERTED;
SET @DIF = @PKNew - @PKOld;
IF(@PkNew > 0)
UPDATE [Character] SET
PkCountDay = PkCountDay + @DIF,
PkCountWeek = PkCountWeek + @DIF,
PkCountMonth = PkCountMonth + @DIF,
PkCountTotal = PkCountTotal + @DIF
WHERE Name = @Name AND PkCount > 0;
ELSE BEGIN
UPDATE [Character] SET
HeroCountDay = HeroCountDay - @DIF,
HeroCountWeek = HeroCountWeek - @DIF,
HeroCountMonth = HeroCountMonth - @DIF,
HeroCount = HeroCount - @DIF
WHERE Name = @Name AND PkCount < 0;
END
SET NOCOUNT OFF
END
UPDATE Character SET PkCountDay = 0
UPDATE Character SET PkCountWeek = 0
UPDATE Character SET PkCountMonth = 0ATENÇÃOUPDATE Character SET HeroCountDay = 0
UPDATE Character SET HeroCountWeek = 0
UPDATE Character SET HeroCountMonth = 0
Não me responsabilizo por uso incorreto.
Não me responsabilizo por eventuais deadlocks. Usem por conta e risco.
Créditos:
Renato