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

Trigger para actualizar saldos

Estas en el tema de Trigger para actualizar saldos en el foro de SQL Server en Foros del Web. Hola a todos, He estado trabajando en un trigger por hace un par de horas sin lograr mi objetivo. Bien, lo que quiero hacer es ...
  #1 (permalink)  
Antiguo 23/02/2015, 19:24
 
Fecha de Ingreso: junio-2014
Mensajes: 18
Antigüedad: 10 años, 6 meses
Puntos: 0
Trigger para actualizar saldos

Hola a todos,

He estado trabajando en un trigger por hace un par de horas sin lograr mi objetivo.

Bien, lo que quiero hacer es que al borrar un renglón de una tabla llamada Entradas se actualicen los saldos de la tabla SaldosI automáticamente con un trigger.

Si los saldos alcanzan el valor menor (0.00) se borra el renglón de la tabla SaldosI

El código de mi trigger es el siguiente:
Código SQL:
Ver original
  1. CREATE TRIGGER BorraEntrada ON Entradas FOR DELETE
  2. AS
  3. BEGIN
  4.     DECLARE @cod INT
  5.     DECLARE @mes CHAR(6)
  6.     DECLARE @EU NUMERIC(10, 2)
  7.     DECLARE @EV NUMERIC(10, 3)
  8.  
  9.     SELECT @cod = codigo, @mes = SUBSTRING(fecha2, 1, 6), @EU = cantidad, @EV = total FROM Deleted
  10.  
  11.     UPDATE SaldosI SET entradaV = entradaV - @EV, entradaC = entradaC - @EU WHERE codigo = @cod AND mes = @mes
  12.  
  13.     DECLARE @cant NVARCHAR(10)
  14.     SET @cant = N'SELECT entradaC FROM SaldosI WHERE codigo = @cod AND mes = @mes'
  15.     EXEC sp_executesql @cant, N'@cod INT, @mes CHAR(6)', @cod, @mes
  16.  
  17.  
  18.     IF (@cant = '0.00')
  19.         DELETE FROM SaldosI WHERE codigo = @cod AND mes = @mes
  20. END

La parte de:
Código SQL:
Ver original
  1. DECLARE @cant NVARCHAR(10)
  2.     SET @cant = N'SELECT entradaC FROM SaldosI WHERE codigo = @cod AND mes = @mes'
  3.     EXEC sp_executesql @cant, N'@cod INT, @mes CHAR(6)', @cod, @mes
[/CODE]

No se si está bien, lo hice basándome en unos ejemplos que encontré y es justo esa parte la que quiero saber cómo sería en dado caso que esté yo mal.

Última edición por gnzsoloyo; 24/02/2015 a las 08:28 Razón: Código muy mal etiquetado. Usar Highlight "SQL".
  #2 (permalink)  
Antiguo 24/02/2015, 08:23
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Trigger para actualizar saldos

y ya lo probaste???? digo si tu que tienes los datos no sabes si esta bien como quieres que te digamos nosotros??? Ahora porque usas un query dinamico para hacer un select simple???

Código SQL:
Ver original
  1. CREATE TRIGGER BorraEntrada ON Entradas FOR DELETE
  2. AS
  3. BEGIN
  4.     DECLARE @cod INT
  5.     DECLARE @mes CHAR(6)
  6.     DECLARE @EU NUMERIC(10, 2)
  7.     DECLARE @EV NUMERIC(10, 3)
  8.  
  9.     SELECT @cod = codigo, @mes = SUBSTRING(fecha2, 1, 6), @EU = cantidad, @EV = total FROM Deleted
  10.  
  11.     UPDATE SaldosI SET entradaV = entradaV - @EV, entradaC = entradaC - @EU WHERE codigo = @cod AND mes = @mes
  12.  
  13.     DECLARE @cant NVARCHAR(10)
  14.            SELECT @cant=entradaC FROM SaldosI WHERE codigo = @cod AND mes = @mes
  15.     IF (@cant = '0.00')
  16.         DELETE FROM SaldosI WHERE codigo = @cod AND mes = @mes
  17. END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 24/02/2015, 11:30
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Trigger para actualizar saldos

Y regresa la burra al trigo, ¿Por qué hacerlo con TRIGGER?
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 24/02/2015, 11:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Trigger para actualizar saldos

Porque la mayoría busca siempre soluciones automágicas donde hay aque programar poco, y validar menos aún.

La verdad, el 99,99% de las veces que preguntan, o no cumplen con los requisitos necesarios para hacerlo en un trigger, o bien lo que en realidad necesitan usar son stored procedures.

Parece que tomasen el TRIGGER como un elemento mágico que lo resuelve todo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 24/02/2015 a las 12:17
  #5 (permalink)  
Antiguo 24/02/2015, 11:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Trigger para actualizar saldos

Lo que pasa es que la mayoria de los que preguntan por un trigger son developers que quiere hacer mas facil su vida :P ningun DBA(que se respete claro esta jejejeje) recomendaria usar triggers para tareas que no son necesarias jejejejej
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: saldos, select, siguiente, tabla, 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 11:20.