SQL Server - Trigger que no se dispara

   
Vista:
Imágen de perfil de Cesar

Trigger que no se dispara

Publicado por Cesar (6 intervenciones) el 24/02/2009 05:08:38
Hola a todos.

Por favor necesito su ayuda en el siguiente caso:

Generé un trigger AFTER INSERT para que haga una actualización de dos columnas, estuvo funcionando pero ahora ya no.

Que puede estar pasando?

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Trigger que no se dispara

Publicado por Isaias (3308 intervenciones) el 27/02/2009 22:43:31
Que no se esta cumpliendo la condicion de tu trigger.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Cesar

RE:Trigger que no se dispara

Publicado por Cesar (6 intervenciones) el 02/03/2009 21:26:43
Isaias:

Saludos y gracias por responder. Fijate que es un trigger que se dispara FOR INSERT, el cual hace una autoactualización de unos campos que no se consiguen con el componente que genera el insert. Estaba funcionando pero algo pasó en la DB, ya es el segundo caso. Si yo hago este insert desde la linea de comando si funciona, pero si lo hace la aplicación (VB6.0 usando componentes) no se dispara.

A continuación el código.
------------------------------------------------------------------------------------------------------------
ALTER TRIGGER [Actualiza_Cobrador_factura] ON [dbo].[cxc_factura]
FOR INSERT
AS
declare @Pcod_cobrador as int
declare @Pcod_ruta_cobro as int
declare @Pcod_cliente as int
declare @Pcod_factura as int
declare @pcod_serie as int
declare @pcod_empresa as int

Select @pcod_empresa=cod_empresa,@pcod_cliente=cod_cliente, @pcod_factura = cod_factura, @pcod_serie=cod_serie
from inserted With(Nolock)

-- OBTENER LA RUTA DE COBRO
select @Pcod_ruta_cobro=cod_ruta_cobro from ven_cliente With(Nolock)
where cod_cliente = @pcod_cliente

-- OBTENER EL COBRADOR
Select @Pcod_cobrador = cod_cobrador from cxc_ruta_cobrador With(Nolock)
where cod_ruta_cobro= @Pcod_ruta_cobro and cod_empresa = @pcod_empresa

update cxc_factura set cod_cobrador = @Pcod_cobrador, cod_ruta_cobro = @Pcod_ruta_cobro
where cod_factura = @pcod_factura and cod_serie = @pcod_serie
-------------------------------------------------------------------------------------------------------------
El with(nolock) se lo acabo de poner pero igual no funciona.

Mucho agradecer tu ayuda.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Trigger que no se dispara

Publicado por Ethan (2 intervenciones) el 10/03/2009 23:55:36
que manejador de base de datos usas:

1.checate que se este lanzando por cada linea insertada... hay una opcion que indica que se dispare x cada linea.
2. puede ser que tu trigger mute tu tabla , es pasa cuando tratas de actualizar el mismo registro que insertas(esto es casi seguro lo que te esta sucediendo).

recomendacion: trata de conseguir los datos antes de insertar si lo haces desde una aplicacion genera una consulta que te devuelva internamente los valores y se los concatenas a tu query de insercion.

*me causa intriga que no te marque que la tabla esta mutando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Cesar

RE:Trigger que no se dispara

Publicado por Cesar (6 intervenciones) el 11/03/2009 21:28:50
Gracias Ethan:

Fijate que estoy usando SQL Server 2000 en el servidor, tengo suscrita la instancia de 2000 en mi PC (cliente) que tiene instalado 2005.

Estoy pensando migrar a 2005 la DB del servidor de datos y para eso estoy haciendo algunas pruebas y ahi si me funcionó el trigger sin ningún problema.

No se realmente lo que está sucediendo. Actualmente hice un SP y lo meti en un job para que evalue esta situacion cada determinado tiempo y lo corrija, pero esto solo es un paleativo, no es la solución real.

Mucho te agradezco tu ayuda y si tienea algo más será bienvenido.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar