MySQL - como resolver este trigger

 
Vista:
sin imagen de perfil
Val: 6
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

como resolver este trigger

Publicado por heberth (6 intervenciones) el 30/05/2017 23:09:29
Saludos a todos, tengo la siguiente inquietud: estoy construyendo un sistema de pagos el cual tiene una tabla pagos con los siguientes campos:

No_pago
Cédula
fecha_pago
valor_cuota
abono
vr_interes


y una tabla préstamos con los siguientes pagos:

No_préstamo
cédula
Vr_préstamo
No_cuotas
fecha_préstamo
saldo

Lo que deseo es poder eliminar un pago de la tabla "pagos" y que inmediatamente se reste el valor eliminado al saldo (campo ubicado en la tabla préstamos)

Tengo el siguiente código del trigger:

UPDATE Prestamos P,
SET P.saldo, = ( SELECT (valor_cuota + abono) AS saldo_actual FROM pagos WHERE P.cedula= C.cedula AND P.No_pago = C.No_pago )

De antemano agradezco su colaboración.
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 xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

como resolver este trigger

Publicado por xve (1151 intervenciones) el 31/05/2017 15:07:07
Hola Heberth, tal como lo entiendo, podría ser así?

1
2
3
CREATE TRIGGER TriggerNombre AFTER DELETE ON `pagos`
FOR EACH ROW
UPDATE Prestamos SET saldo=saldo-OLD.saldo WHERE cédula=OLD.Cédla

Te recomiendo eliminar los acentos de los campos...

Te sirve?
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: 6
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

como resolver este trigger

Publicado por heberth (6 intervenciones) el 01/06/2017 18:36:31
Gracias por tu respuesta xve, lo que sucede es que en la tabla pagos existe varios registros en los cuales se repite el campo cédula Ejemplo:
la tabla pagos posee la siguiente estructura:

No_pago
Cédula
fecha_pago
valor_cuota
abono
vr_interes

cuando se realizan el proceso de pago se va registrando los pagos hechos por cada uno de los clientes de tal forma que cada vez que se haga el pago se repetirá el número de cedula para cada registro ejemplo:

No_pago cedula fecha_pago valor_pago abono vr_interes
00001 32.329.203 01-04-2017 100.000 34.000 26.000
00002 43.291.509 10-04-2017 165.000 0 43.000
00003 32.329.203 25-04-2017 100.000 0 26.000
00004 32.329.203 30-04-2017 100.000 24.000 26.000

Si observas, el registro 1, 3 y 4 pertenece a pagos del mismo cliente de tal forma que si utilizo la clausula WHERE cedula = OLD.cedula obtendré como resultado todos los registros que con tenga el número de cédula correspondiente al cliente seleccionado
¿Cómo puedo solucionar esta situación?
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