PDA

View Full Version : |Jobs/Query| [Trigger]Resets em tempo Real - resetsDay / resetsWeek / etc



jhonhy™
07/02/2015, 05:23 PM
Sistema de Resets em tempo real sem ter que usar uma JOB.

Crie em seu banco de dados as colunas:

resetsDay INT Desmarcado (0)
resetsWeek INT Desmarcado (0)
resetsMonth INT Desmarcado (0)

Rode a Trigger:


USE [MuOnline]
GO
/****** Object: Trigger [dbo].[add_resetrank] Script Date: 12/04/2011 13:49:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[add_resetrank]
ON [dbo].[Character]
after update
as
IF UPDATE(resets)
begin SET NOCOUNT ON;
Update [Character] set [Character].resetsDay=resetsDay+1, resetsWeek=resetsWeek+1, resetsMonth=resetsMonth+1
Where [Character].accountid=(SELECT accountid FROM Inserted)
and [Character].name=(SELECT name FROM Inserted)
end

Para remover a Trigger:


USE [MuOnline]
GO
DROP TRIGGER [dbo].[add_resetrank]

Mas o que ela faz?

Ao resetar no jogo ao contabilizar 1 ponto na tabela resets a Trigger ira jogar +1 nas outras tabelas citadas acima! assim contabilizando os rankings em tempo real!

Antes de tudo faça um BACKUP do seu banco de dados, para evitar erros! ja usei esta Trigger a muito tempo e nunca tive problemas Abraços.!

Créditos:
Stefano Aguiar

InFamous
26/05/2015, 12:59 AM
testado e aprovado.

pitomba
28/10/2016, 02:58 PM
Ela esta com problema.
Se criar um novo personagem no jogo, ele começa com 1 reset mensal e semanal automaticamente

lockhost
28/10/2016, 04:26 PM
Falta verificar se o reset for igual a 0, pois do modo que está a trigger (gatilho) irá funcionar quando atualizar a coluna "reset" de Character, ou seja quando criar um char ele criou uma linha e atualizou a coluna "reset".
Necessário verificar se a coluna reset != 0

jhonhy™
28/10/2016, 04:29 PM
@pitomba, isso não é a procedure não, é alguma coisa em seu SQL/MuServer. Sempre usei e nunca ganho reset ao criar char não.