I have this trigger script created by me which executes a perfect UPDATE when it is a single user but when it is more than one or several User Fails the query by the trigger (BEFORE NOTHING SEARCH ON INTERNET that has to do with TOP 1 or IN the problem is the next)
The trigger is as follows:
USE [PS_GameData]
GO
/****** Object: Trigger [dbo].[Utilidad_4] Script Date: 09/16/2016 08:29:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: DEVjuan,,Juan>
-- Create date: 06-04-2016>
-- Description: AntiLinkeos de Capas y Encanto de Capas
-- =============================================
ALTER TRIGGER [dbo].[Utilidad_4]
ON [dbo].[Chars]
AFTER UPDATE
AS
DECLARE
@level_60 int = 835,
@level_30 int = 589,
@level_15 int = 134,
@CharName Varchar (250) =(SELECT TOP 1 CharName FROM INSERTED),
@CharID int = (SELECT TOP 1 CharID FROM INSERTED),--Chars WHERE CharName = @CharName),
@STR60 int = 836,
@DEX60 int = 836,
@REC60 int = 836,
@WIS60 int = 836,
@INT60 int = 836,
@LUC60 int = 836,
@STR30 int = 590,
@DEX30 int = 590,
@REC30 int = 590,
@WIS30 int = 590,
@INT30 int = 590,
@LUC30 int = 590,
@STR15 int = 135,
@DEX15 int = 135,
@REC15 int = 135,
@WIS15 int = 135,
@INT15 int = 135,
@LUC15 int = 135,
@STR60_insert int = (SELECT STR FROM INSERTED)
--------------------------------------------------------------------------------------------------------------------------------------------------
--Anti edicion de PJ pvp 1-60
IF (SELECT @STR60_insert)>0
BEGIN
CREATE TABLE #TempSTR60(STR1 int,STR2 int);
INSERT INTO #TempSTR60 Values(@STR60_insert,@STR60);
IF (SELECT [STR1] FROM #TempSTR60 WHERE [STR1] = @STR60_insert) > (SELECT [STR2] FROM #TempSTR60 WHERE [STR2] = @STR60)
BEGIN
UPDATE PS_GameData.dbo.Chars SET STR = @level_60, DEX = 0,REC = 0,WIS = 0,INT = 0,LUC = 0
WHERE STR > @STR60 and level BETWEEN 31 and 60 and CharID in (SELECT CharID FROM Chars WHERE CharName =@CharName)
OR STR > @STR60 and level BETWEEN 31 and 60 and CharID in (@CharID)
PRINT 'EDITADO 60 STR del CharName '+CONVERT(varchar(3), @CharName)
DROP Table #TempSTR60
END
END
ELSE PRINT 'STR NO'
PRINT 'FIN'
Queries that fail These are:
UPDATE PS_GameData.dbo.Chars SET
STR = STR
UPDATE PS_GameData.dbo.Chars SET
STR = 1000
The query that happens good is this:
UPDATE PS_GameData.dbo.Chars SET
STR = 1000
WHERE CharID = '57803'
PROBLEM: the problem Causes this:
@STR60_insert int = (SELECT STR FROM INSERTED)
I know another way to take the inserted data or to update it. These two but none has helped me.
SET @STR60_insert int = (SELECT STR FROM INSERTED)
SET @STR60_insert int = (SELECT STR FROM DELETED)
I ask how can I take the inserted data and at the same time be able to execute the queries that give problems so that the trigger fits me both with the one that gives the query good and the one that is wrong?