Saludos amigos.
estoy armando un trigger donde en dos instrucciones requiero algo como
estoe:
UPDATE mitabla set
@valorfinal=mitabla.valorfinal=mitabla.valorfinal+inserted.valor
from mitabla inner join inserted on mitabla.campopk= inserted.fk
/*luego debo sacar el valor inicial de la misma tabla para compararlo*/
select @valorinicial=mitabla.valorinicial
from mitabla inner join inserted on mitabla.campopk= inserted.fk
/*la idea es comparar el valorinicial con el valorfinal calculado*/
IF @valorinicial > @valorfinal
raiserror(.
Pero viendo mejor las cosas se me ha ocurrido reducirlo a un update unico:
UPDATE mitabla set
@valorfinal=mitabla.valorfinal=mitabla.valorfinal+inserted.valor ,
@valorinicial=mitabla.valorinicial
from mitabla inner join inserted on mitabla.campopk= inserted.fk
/*lo demas igual*/
IF @valorinicial > @valorfinal
raiserror(.
Y me sorprendo de que me lo compila y no me da ningun error y en las
pruebas aparentemente funciona bien. Que opinion tienen ustedes ? Es
realmente mas eficiente considerando que son tablas muy grandes ? Es
correcto hacer eso asi y no da problemas ? Si se fijan la segunda expresion
en el SET es una simple asignacion a una variable
@valorinicial=mitabla.valorinicial (sorprendentemente lo acepta) y
poniendolo asi @valorinicial=mitabla.valorinicial=mitabla.valorinicial
tambien me lo aceptaría obteniendo el mismo efecto.
Que creen de eso?
LN
Leer las respuestas