Q:

devuelve mas de un resultado SQL bajo consulta para trigger?

tengo este Script de trigger creado por mi persona
el cual se ejecuta perfecto un UPDATE  cuando se trata de un solo usuario especifico pero Cuando es mas de uno osea varios User Falla la consulta por el trigger (ANTE NADA BUSQUE EN INTERNET de que tiene que ver con TOP 1 o IN el problema esta el siguiente) 
EL trigger es el siguiente:
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'

Las consultas que fallan Son estas:
UPDATE PS_GameData.dbo.Chars SET 
STR = STR

UPDATE PS_GameData.dbo.Chars SET 
STR = 1000 

La consulta que pasa buena es esta:
 UPDATE PS_GameData.dbo.Chars SET 
    STR = 1000 
    WHERE CharID = '57803'

PROBLEMA: el problema lo Causa esto:
@STR60_insert int = (SELECT STR FROM INSERTED)

me se otra forma de tomar los datos insertados o para actualizar. Estos dos pero ninguno me ha servido.
 SET @STR60_insert int = (SELECT STR FROM INSERTED)
 SET @STR60_insert int = (SELECT STR FROM DELETED)

Pregunto ¿Como puedo tomar el dato insertado y a la vez poder ejecutar las consultas que dan problemas para que el trigger me quede bien tanto con la que da buena la consulta como la que es erronea?

A:

Despues de tanto trabajar vi la respuesta xD
SELECT Top 1 en 
@STR60_insert int = (SELECT STR FROM INSERTED)

