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

Problema en la actualizacion con un Trigger

Estas en el tema de Problema en la actualizacion con un Trigger en el foro de Mysql en Foros del Web. Hola a todos como están Tengo un problema con la actualización de un dato con trigger de tabla a otra tabla. Les paso a explicar: ...
  #1 (permalink)  
Antiguo 12/01/2015, 07:01
 
Fecha de Ingreso: enero-2015
Mensajes: 5
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta Problema en la actualizacion con un Trigger

Hola a todos como están

Tengo un problema con la actualización de un dato con trigger de tabla a otra tabla. Les paso a explicar:

Tengo 2 tablas una llamada Ingreso y otra saldo
Código MySQL:
Ver original
  1. +-----------+
  2. |ingreso    |
  3. +-----------+
  4. |idingreso  |
  5. |cantidad   |
  6. |fecha      |
  7. +-----------+
  8.  
  9.  
  10. +-----------+
  11. |saldo      |
  12. +-----------+
  13. |idsaldo    |
  14. |saldo      |
  15. |           |
  16. +-----------+
Cuando ingreso un valor (decimal) como dinero en la tabla ingreso copio el campo cantidad al campo saldo
mediante este trigger:
Código MySQL:
Ver original
  1. CREATE TRIGGER `tr_insertar_valor` AFTER INSERT ON `ingreso`
  2. INSERT INTO saldo(saldo) VALUES (New.cantidad);
El problema se presenta cuando quiero "modificar " esa cantidad en la tabla ingreso una cantidad el triger que uso ON UPDATE en la tabla ingreso es este:
Código MySQL:
Ver original
  1. CREATE RIGGER `tr_actualiza_valor` AFTER UPDATE ON `ingreso`
  2. update saldo set saldo=New.cantidad;

El problema en si es que este ultimo trigger modifica la cantidad en la tabla saldo si la modifico en la tabla ingreso pero si hay ingresadas mas registros en la tabla saldo al modificar cualquier registro en la tabla ingreso en la tabla saldo el 2do TR me modifica tooooodas los registros y me los pone a todos con la misma cifra...

Lo expresare con un ejemplo mas grafico

INGRESE LA SUMA DE $300,12 Y USO EL
tr_insertar_valor

TABLA INGRESO TABLA SALDO

idingreso | cantidad| idsaldo|saldo |
1 | 300,12 | | 1 |300,12
----------------------- -------------------

INGRESO OTRO VALOR EN LA TABLA INGRESO:

TABLA INGRESO TABLA SALDO
------------------------- -------------------
idingreso | cantidad| idsaldo|saldo |
------------------------- -------------------
1 | 300,12 | | 1 |300,12
2 | 78,20 | 2 | 78,20
----------------------- -------------------

Y AQUI VIENE EL PROBLEMA AL "MODIFICAR CON EL
tr_actualiza_valor

------------------------- -------------------
idingreso | cantidad| idsaldo|saldo |
------------------------- -------------------
1 | 66,10 | | 1 |66,10
2 | 78,20 | 2 |66,10
----------------------- -------------------

Como veran modifique la suma de $300,12 y en la tabla saldo en vez de modificarme solo ese valor me modifico todos los valores y con la misma cifra todos iguales. Lo he probado con mas cifras y hace lo mismo si en la tabla ingresos hay 20 registros el 1er TR los copiara a los 20 y bien.. pero si yo modifico CUALQUIERA en la tabla ingreso EL 2DO TR modificara todos los registros y con la misma cifra en vez de modificarme el que he modificado en la tabla ingreso solamente.

Se que al 2do TR le falta algo .. he probado con la clausula WHERE idsaldo = idsaldo y de mil formas con esta clausula y me da error no me deja o no hace nada.
Si alguien sabe de cual es el error en el segundo TR y me pudiera ayudar le estaria agradecido.

Muchas Gracias de antemano.

Última edición por gnzsoloyo; 12/01/2015 a las 07:21
  #2 (permalink)  
Antiguo 12/01/2015, 07:20
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: Problema en la actualizacion con un Trigger

Cita:
Si alguien sabe de cual es el error en el segundo TR y me pudiera ayudar le estaria agradecido
El segundo trigger tiene un UPDATE incondicional, esto es, no tiene WHERE, por lo que lo que le estás diciendo es que actualice TODOS los registros de la tabla con el mismo valor...
MySQL no puede adivinar a qué registro te estás refiriendo si no se lo especificas. No te olvides que es un lenguaje imperativo: Sólo hace lo que le indicas expresamente...

El problema básico es que esas son tablas solitarias, no parecen estar relacionadas con nada, ni siquiera con una fecha, por lo que o estás omitiendonos información, o tienes el esquema mal diseñado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/01/2015, 09:38
 
Fecha de Ingreso: enero-2015
Mensajes: 5
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema en la actualizacion con un Trigger

Gracias gnzsoloyo
  #4 (permalink)  
Antiguo 12/01/2015, 09:42
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: Problema en la actualizacion con un Trigger

La pregunta principal que tu esquema no responde es: ¿Saldo de qué cosa?
¿De un día? ¿De un cliente? ¿De un producto? ¿De un proveedor?
"Saldo" sólo no dice nada. Absolutamente nada.

¿Qué representa?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: actualizacion, campo, fecha, registro, tabla, trigger, update
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 05:57.