SQL Server - Trigger!

 
Vista:
sin imagen de perfil
Val: 17
Ha aumentado su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Sergio (10 intervenciones) el 29/08/2017 23:15:35
Buenas,
Saben porque mi Trigger que se dispara con un Update no funciona?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
IF UPDATE(num_act) -- Solo si se actualiza SALDO
 
 BEGIN
 declare @num_act int
 declare @cod_con char
 
 select @num_act = inserted.num_act,@cod_con=inserted.cod_con from inserted
 
 
 update Saitemp_V4Prueba.dbo.gen_consecutivo set  Saitemp_V4Prueba.dbo.gen_consecutivo.num_act=
 case
 when @cod_con='0' then ( SELECT (@num_act+1) FROM INSERTED )
 when @cod_con<>'0' then ( SELECT (@num_act) FROM INSERTED )
 end
 where Saitemp_V4Prueba.dbo.gen_consecutivo.cod_con=@cod_con
 --when deleted.cod_con='0' then ( SELECT (num_act+1) FROM INSERTED ) where Saitemp_V4Prueba.dbo.gen_consecutivo.cod_con='0'
  END
  END

Saludos,
Se supone que solo debe actualizar los registros correspondientes al "Cod_con" que es el identificador, pero siempre me actualiza el primer registro, y si actualizo cualquier código.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Isaias (4558 intervenciones) el 29/08/2017 23:42:21
¿Y que pasa si tu base INSERTED trae mas de un registro?

1
select @num_act = inserted.num_act,@cod_con=inserted.cod_con from inserted
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
sin imagen de perfil
Val: 17
Ha aumentado su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por sergio (10 intervenciones) el 29/08/2017 23:50:36
Hola,
Solo se puede modificar un registro a la vez, no puede traer mas de un ID o mas de una cantidad.
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 Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Isaias (4558 intervenciones) el 30/08/2017 16:51:13
¿Sobre que TABLA esta creado este 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
sin imagen de perfil
Val: 17
Ha aumentado su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Sergio (10 intervenciones) el 30/08/2017 17:05:54
Sobre Saitemp_V3,
pero cuando actualizan cualquier registro me actualiza el del update.
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 Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Isaias (4558 intervenciones) el 30/08/2017 17:08:35
¿Y esta es la tabla que quieres actualizar?, Pues lo que tienes es un CICLO INFINITO, simple
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
sin imagen de perfil
Val: 17
Ha aumentado su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Sergio (10 intervenciones) el 30/08/2017 17:38:10
No, el Trigger esta sobre V3, y debe actualizar V4prueba, lo hace bien, cuando actualizo un dato en V3 el V4 se actualiza solo, pero se supone que solo debería modificar cuando se actualiza el id "0", pero si modifico cualquiera me actualiza.
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 Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Isaias (4558 intervenciones) el 30/08/2017 18:05:52
Hagamos este cambio y probemos

1
2
when @cod_con = '0' then @num_act+1 --( SELECT (@num_act+1) FROM INSERTED )
 when @cod_con <> '0' then @num_act --( SELECT (@num_act) FROM INSERTED )
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
sin imagen de perfil
Val: 17
Ha aumentado su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Sergio (10 intervenciones) el 30/08/2017 18:23:04
Sigue llevando bien la cantidad, pero sigue actualizando el registro 0,
Cambie la asignación de la variable, pero tampoco
select @num_act = inserted.num_act,@cod_con=inserted.cod_con from inserted
select @cod_con=cod_con from deleted
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 Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Trigger!

Publicado por Isaias (4558 intervenciones) el 30/08/2017 18:52:15
Pues sin datos, es dificil seguir tratando de "Pegarle" a la solucion
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