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

problema trigger / delete masivo

Estas en el tema de problema trigger / delete masivo en el foro de SQL Server en Foros del Web. hola, tengo un problema entre un trigger (on deleted) y un procedimiento almacenado que hace un delete masivo y luego un insert masivo despues de ...
  #1 (permalink)  
Antiguo 11/01/2006, 18:34
 
Fecha de Ingreso: septiembre-2003
Mensajes: 39
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta problema trigger / delete masivo

hola, tengo un problema entre un trigger (on deleted) y un procedimiento almacenado que hace un delete masivo y luego un insert masivo despues de un proceso de calculos...

al ejecutarlos desde el query analyzer funciona perfecto... pero al llamarlos desde VB no se ejecuta la parte que hace el borrado masivo... y descubrí q al quitar el trigger de la tabla si se ejecutaba...
mi pregunta es como puedo hacer para que convivan el trigger (para eliminacion) y el procedimiento almacenado q borra en forma masiva muchas filas de dicha tabla...???

existe la forma de identificar en el trigger que ese procedimiento almacenado fue el que eliminó las filas... y no alguna otra instruccion delete de algun otro lugar..

help me please

el trigger

Código:
CREATE TRIGGER LOG_ProRecDet_DELETE ON ProRecDet
FOR DELETE 
AS

IF @@rowcount>0 begin 
	DECLARE @cod numeric, @cant numeric, @idpro numeric, @usr nvarchar(50), @xusr nvarchar(50)
	DECLARE borrados CURSOR FOR SELECT idpro,cod,cant,usr FROM deleted
	OPEN borrados
	FETCH NEXT FROM borrados INTO @idpro,@cod,@cant,@usr
	WHILE @@FETCH_STATUS = 0
		BEGIN
		print @cod 
		print @idpro
		print @usr 

			if APP_NAME() like 'Visual Basic%' or APP_NAME() like 'Mas%'	
				set @xusr=@usr
			else	
				set @xusr='-'
	
			Insert Into LOGREC select 'DEL', 'ProRecDet',  @idpro, @cod,@cant, host_name(), getdate(),@xusr, APP_NAME()
	  	FETCH NEXT FROM borrados INTO @idpro,@cod,@cant,@usr
	END
	CLOSE borrados
	DEALLOCATE borrados
END
y el SP

Código:
CREATE PROCEDURE  SpActualizaRecetaGif01
(
@fecIni as smalldatetime,
@fecFin as smalldatetime
)

AS


PRINT 'ELIMINANDO VALORES ANTIGUOS RECETA'
DELETE  PRORECDET WHERE COD IN 
(SELECT CODGIF FROM v_pro_gif_04_Nuevo_Valor_gif_receta where 
(idpro = v_pro_gif_04_Nuevo_Valor_gif_receta.pro) and 
(mes between month(@fecIni) and month(@fecfin)) and 
(ano between year(@fecIni) and year(@fecfin)) ) --order by idpro,cod
print'fin de eliminacion'

IF @@ERROR <> 0 
BEGIN
   PRINT "Error"
   RETURN(99)
END
ELSE
BEGIN
   PRINT "OK"
   RETURN(0)
END
__________________

www.qZone.cl

Última edición por gangster; 12/01/2006 a las 06:04
  #2 (permalink)  
Antiguo 12/01/2006, 10:51
 
Fecha de Ingreso: septiembre-2003
Mensajes: 39
Antigüedad: 21 años, 2 meses
Puntos: 0
ya lo resolvi.. si keiren ver la respuesta a eso.. vean aki
http://chilehardware.com/index.php?n...=155894#155894
__________________

www.qZone.cl
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 13:51.