UPDATE Multifuncional

16/05/2005 - 21:44 por Luis Nivar | Informe spam
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

Preguntas similare

Leer las respuestas

#1 Isaias Islas
16/05/2005 - 21:50 | Informe spam
Roberto

Seria conveniente que nos dijeras QUE QUIERES LOGRARAlgo asi.

Amigos, quiero hacer esto, bla, bla, bla, bla.

Para lo cual ocupo el siguiente codigo:

Codigo
Respuesta Responder a este mensaje
#2 Isaias Islas
16/05/2005 - 21:55 | Informe spam
Fe de erratas

Perdon, debe decir: LUIS (en lugar de Roberto)
Respuesta Responder a este mensaje
#3 Luis Nivar
16/05/2005 - 22:17 | Informe spam
Ok: La tabla (mitabla) tiene entre otros dos campos : valorinicial y
valorfinal.
mitabla.Valorfinal se va actualizando (sumando( en un trigger de insert de
una tabla de movimientos, la cual tiene un campo (campofk) como clave
foranea de mitabla.
La idea del trigger es evitar que mitabla.valorfinal llegue a ser mayor que
mitabla.valorinicial.



"Isaias Islas" wrote in message
news:ude%
Roberto

Seria conveniente que nos dijeras QUE QUIERES LOGRARAlgo asi.

Amigos, quiero hacer esto, bla, bla, bla, bla.

Para lo cual ocupo el siguiente codigo:

Codigo


Respuesta Responder a este mensaje
#4 Maxi
17/05/2005 - 02:04 | Informe spam
Hola, y por un trigger quieres hacer eso? no seria mejor una restriccion
Check?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas
Msn:

Maxi.da[arroba]gmail.com

"Luis Nivar" escribió en el mensaje
news:
Ok: La tabla (mitabla) tiene entre otros dos campos : valorinicial y
valorfinal.
mitabla.Valorfinal se va actualizando (sumando( en un trigger de insert de
una tabla de movimientos, la cual tiene un campo (campofk) como clave
foranea de mitabla.
La idea del trigger es evitar que mitabla.valorfinal llegue a ser mayor
que
mitabla.valorinicial.



"Isaias Islas" wrote in message
news:ude%
Roberto

Seria conveniente que nos dijeras QUE QUIERES LOGRARAlgo asi.

Amigos, quiero hacer esto, bla, bla, bla, bla.

Para lo cual ocupo el siguiente codigo:

Codigo






Respuesta Responder a este mensaje
#5 Isaias Islas
17/05/2005 - 02:13 | Informe spam
¿Porque no colocas un CHECK CONSTRAIN para dicha verificacion y te quitas de
tantas broncas con los triggers?
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida