Foros del Web » Programación para mayores de 30 ;) » .NET »

Trigger

Estas en el tema de Trigger en el foro de .NET en Foros del Web. Hola Colegas, tengo una pantalla de la cual no tengo el código fuente, esa pantalla guarda información en TABLA_A pero lo hace mediante un script ...
  #1 (permalink)  
Antiguo 21/09/2011, 08:41
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Pregunta Trigger

Hola Colegas, tengo una pantalla de la cual no tengo el código fuente, esa pantalla guarda información en TABLA_A pero lo hace mediante un script que esta clavado en el código, me están solicitando que genere histórico de esa tabla, es decir, guardar los cambios que se hacen a los registros.

Estoy tratando de hacer un Trigger para que cuando los valores de la TABLA_A sufran una actualización me inserte el registro en TABLA_B de aquellos registros que se hayan actualizado, es decir, los valores viejos en otra tabla, pero tengo un problema.

Me está insertando en la TABLA_B dos veces el registro que se actualizo y no se porque, tengo este Trigger.


Código:
CREATE TRIGGER dbo.TABLA_A_Update ON dbo.TABLA_A
FOR UPDATE  AS

BEGIN
	INSERT INTO TABLA_B
	SELECT 
		Del.Campo1, 
		Del.Campo2, 
		Del.Campo3,  
		Del.Campo4,  
		Del.Campo5,  		
		GETDATE() 
	FROM DELETED Del
END
Con esto me inserta en TABLA_B los valores que tenia TABLA_A antes de hacer el Update, pero el detalle es que los diplica, los inserta dos veces.
Si alguien ha hecho algo similar le pido de favor su apoyo.
Gracias.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #2 (permalink)  
Antiguo 21/09/2011, 09:43
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Trigger

Ya lo solucione colegas, que quedo asi:

Código:
CREATE TRIGGER dbo.TABLA_A_Update ON dbo.TABLA_A
FOR UPDATE  AS

IF UPDATE (Campo1) OR UPDATE (Campo2)
BEGIN
	INSERT INTO TABLA_B
	SELECT 
		Del.Campo1, 
		Del.Campo2, 
		Del.Campo3,  
		Del.Campo4,  
		Del.Campo5,  		
		GETDATE() 
	FROM DELETED Del
END
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."

Etiquetas: trigger
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 04:31.