Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Trigger, Procedimiento Almacenado u otra opción??

Estas en el tema de Trigger, Procedimiento Almacenado u otra opción?? en el foro de SQL Server en Foros del Web. hola de nuevo... quiero hacer la siguiente pregunta: necesito ejecutar un proceso (una consulta para ser mas exacto) pero esto solo cuando se actualice un ...
  #1 (permalink)  
Antiguo 19/03/2007, 09:26
Avatar de el mago de oz  
Fecha de Ingreso: octubre-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Trigger, Procedimiento Almacenado u otra opción??

hola de nuevo... quiero hacer la siguiente pregunta:

necesito ejecutar un proceso (una consulta para ser mas exacto) pero esto solo cuando se actualice un campo especifico de la tabla.. como puedo detectar esto?

solo me sirve si se hace la actualización en un campo específico para generar un reporte del cambio que identifica ese campo (disponibilidad del producto).., no asi si se actualiza el campo de ubicacion de ese producto por ejemplo... en este caso no me interesa que se genere el reporte (no se si me explico)

bueno..cualquier ayuda acerca de como resolver esto se agradecera

saludos
__________________
"No a las dictaduras, no a la impunidad, no al comercio injusto que explota al menor de edad. Sí a las autocracias, sí a la libertad, el tercer mundo va a estallar."
Finisterra MAGO DE OZ
  #2 (permalink)  
Antiguo 19/03/2007, 21:31
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: Trigger, Procedimiento Almacenado u otra opción??

Para eso necesitas crear un trigger sobre la tabla a "rastrear". Cuando detectes el cambio de valor del campo simplemente ejecuta la consulta que buscas.

Documentate un poco (si no lo has hecho ya) sobre los triggers y si tienes dudas acá te ayudaremos.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 21/03/2007, 15:56
Avatar de el mago de oz  
Fecha de Ingreso: octubre-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Re: Trigger, Procedimiento Almacenado u otra opción??

Gracias por la respuesta... pero eso es justamente lo que necesito saber... como detecto con un trigger la modificacion de un campo especifico si (hasta donde yo se) el trigger se "dispara" solo bajo las opciones de update, delete e insert.
O deberia efectivamente, disparar un trigger para evaluar la modificacion de un campo?? pero si es asi?? como se cual es el valor del campo previo a la actualizacion? o un trigger BEFORE UPDATE (¿se puede asi?)??

En el fondo esa es mi duda... ¿cual es la mejor forma de hacerlo?? y ¿que sentencia deberia usar para detectar las modificaciones??

en ningun caso que me pasen el código.. eso lo hago yo..


saludos...
__________________
"No a las dictaduras, no a la impunidad, no al comercio injusto que explota al menor de edad. Sí a las autocracias, sí a la libertad, el tercer mundo va a estallar."
Finisterra MAGO DE OZ
  #4 (permalink)  
Antiguo 22/03/2007, 10:20
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Trigger, Procedimiento Almacenado u otra opción??

Cita:
Iniciado por el mago de oz Ver Mensaje
Gracias por la respuesta... pero eso es justamente lo que necesito saber... como detecto con un trigger la modificacion de un campo especifico si (hasta donde yo se) el trigger se "dispara" solo bajo las opciones de update, delete e insert.
O deberia efectivamente, disparar un trigger para evaluar la modificacion de un campo?? pero si es asi?? como se cual es el valor del campo previo a la actualizacion? o un trigger BEFORE UPDATE (¿se puede asi?)??

En el fondo esa es mi duda... ¿cual es la mejor forma de hacerlo?? y ¿que sentencia deberia usar para detectar las modificaciones??

en ningun caso que me pasen el código.. eso lo hago yo..


saludos...
Pero creo que te has respondido solo con un update.
  #5 (permalink)  
Antiguo 22/03/2007, 11:06
Avatar de el mago de oz  
Fecha de Ingreso: octubre-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Re: Trigger, Procedimiento Almacenado u otra opción??

Epunamun...eso ya lo descubrí.. efectivamente solo con un update... pero como se podrá analizar de mi pregunta.. si deseo evaluar la actualizacion de un campo específico es porque deseo ver si realmente ese campo cambio en su contenido... si ejecuto un UPDATE a un campo y el valor que asigno es igual al que ya contenia se efectua un UPDATE, pero es obvio que no quiero ejecutar en este caso.. solo si efectivamente el valor del campo es distinto al que habia antes del UPDATE (se entiende o no).. y es eso lo que quiero saber como detectar a través de un trigger o SP o una combinacion de éstos que el campo efectivamente cambió, no solo que se ejecuto un UPDATE sobre el.

Saludos y gracias.
__________________
"No a las dictaduras, no a la impunidad, no al comercio injusto que explota al menor de edad. Sí a las autocracias, sí a la libertad, el tercer mundo va a estallar."
Finisterra MAGO DE OZ
  #6 (permalink)  
Antiguo 24/03/2007, 14:23
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: Trigger, Procedimiento Almacenado u otra opción??

Ahora no tengo el SQL Server a la mano, pero creo que la sentencia que necesitas es Updated(). Si no, lo puedes hacer manualmente comparando la tabla Inserted con Deleted. Algo como:

CREATE TRIGGER mitrigger ON tabla
FOR UPDATE AS
SELECT * FROM Inserted I
INNER JOIN Deleted D
ON I.llave = D.llave
WHERE I.campoarevisar <> D.campoarevisar

Eso te dará los registros con cambios en campoarevisar. Ojo que esto no sirve si lo que han cambiado es el campo llave.

Lo que resta es probablemente meter el resultado en un cursor y ejecutar el SP cada vez. Esto para asegurar que puedes manejar los cambios de varios registros a la vez.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:39.