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

problema con un trigger

Estas en el tema de problema con un trigger en el foro de SQL Server en Foros del Web. Estimados, buenos días. Estoy seguro que no estoy usando la herramienta más indicada pero si la que me sacará del problema en este momento. Tengo ...
  #1 (permalink)  
Antiguo 25/09/2012, 09:55
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 2
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta problema con un trigger

Estimados, buenos días. Estoy seguro que no estoy usando la herramienta más indicada pero si la que me sacará del problema en este momento.
Tengo una aplicación que inserta un registro en una tabla "A" bajo determinada condicion. Cuando se produce una segunda condicion, se inserta un nuevo registro en la misma tabla "A" y se cierra el anterior (un valor false en un campo booleano). Eso funciona perfecto.
El problema surgió cuando cree un trigger (que tambien funciona perfecto) que inserta algunos valores de ese registro insertado en otro tabla "B". Cuando se inserta el registro se dispara el trigger, inserta en la tabla indicada ("B"), pero en la tabla "A" no cierra el registro anterior.
Es como si el trigger estuviera evitando o saltando un paso de mi programa.
El trigger es el siguiente:

ALTER trigger [dbo].[ti_inicio]
on [dbo].[Produccion] after insert
as
declare @tiponovedad char, @nronovedad int, @nroot varchar(8), @tipotarea as char (3) , @inicio as datetime,
@usuario as int, @maq as int, @tur as int, @mtslin as int

select @nronovedad=codigointerno,@nroot=(select ID from Tablero where Codigo=codigotablero),
@tipotarea=Estado, @inicio=CAST(inicio - 2 as datetime), @usuario=CodigoUsuario,
@maq=CS, @tur= CodigoTurno, @mtslin=0
from inserted

begin

insert into nov_prd (tipo_novedad,nro_novedad,nro_ord_prd,tipo_tarea,f h_tarea,operario,
maquina,turno,metros_lineales) values ('A',@nronovedad,@nroot,@tipotarea,@inicio,
@usuario,@maq,@tur,0)
end

desde ya muchas gracias a todos por su aporte
  #2 (permalink)  
Antiguo 25/09/2012, 10:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: problema con un trigger

y donde esta el update de tu tabla A?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 26/09/2012, 09:11
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 2
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: problema con un trigger

el update del registro de la tabla A lo hace la aplicación. El problema está en el insert, por eso coloco el codigo del trigger del insert. La pregunta más concretamente sería algo así, espero saber explicarme:
¿puede ser que al dispararse el trigger "bloquee" el registro de la tabla que tiene que actulizar la aplicación? quizas eso hace que la aplicación no llegue a cerrar el registro anterior.
  #4 (permalink)  
Antiguo 26/09/2012, 09:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: problema con un trigger

y porque no pones el update dentro del trigger?? se supone que cuando lanzas un insert o un update, el campo queda bloqueado en lo que se hace la transaccion, a menos que manejes un nivel de aislamiento que te permita brincar esto.

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 26/09/2012, 11:09
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: problema con un trigger

Nunca he estado de acuerdo de colocar programacion en los TRIGGER's, estos fueron creados en su inicio para cuidar la DRI, nada que ver con la programacion de logica
__________________
MCTS Isaias Islas

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 16:18.