[opensuse-es] MariaDB , actualizar registro con count() nunca da 0
Dos tablas una a muchas UPDATE Datos_tene as dt, Ficheros2 as f2 SET dt.ficherosasociados=(SELECT count(f2.id_Datos_tene) FROM Ficheros2 as f2 WHERE f2.id_Datos_tene=dt.COD_FINCA) where dt.COD_FINCA=f2.id_Datos_tene Cada vez que se borra un registro en Ficheros2 se ejecuta el disparador para actualizar el numero de registros asociados a Datos_tene y que se guardan en Datos_tene.ficherosasociados En realizad se ejecuta cuando se inserta y se borra, pero solo tengo el problema despues de borrar un registro y este es el ultimo asociado, ya que deberia dar cero, pero nunca cambia el campo a 0, siempre se queda en 1. Sera una chorrada pero ya estoy espeso y esto no es lo mio. saludos -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Hiciste la prueba en pasos manualmente? puede haber una transaccion aun no cerrada por eso no ve el cambio. Me parece que el update no va a funcionar porque consultas algo que todavia no ocurrió. Está pueseto en el trigger afterdelete? El día 19 de octubre de 2014, 18:09, admin-listas <admin-listas@satel-sa.com> escribió:
Dos tablas una a muchas
UPDATE Datos_tene as dt, Ficheros2 as f2 SET dt.ficherosasociados=(SELECT count(f2.id_Datos_tene) FROM Ficheros2 as f2 WHERE f2.id_Datos_tene=dt.COD_FINCA) where dt.COD_FINCA=f2.id_Datos_tene
Cada vez que se borra un registro en Ficheros2 se ejecuta el disparador para actualizar el numero de registros asociados a Datos_tene y que se guardan en Datos_tene.ficherosasociados
En realizad se ejecuta cuando se inserta y se borra, pero solo tengo el problema despues de borrar un registro y este es el ultimo asociado, ya que deberia dar cero, pero nunca cambia el campo a 0, siempre se queda en 1.
Sera una chorrada pero ya estoy espeso y esto no es lo mio.
saludos
-- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/... Linux User #495070 http://domonetic.com/blog -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 20/10/14 a las #4, Maxi escribió:
Hiciste la prueba en pasos manualmente? puede haber una transaccion aun no cerrada por eso no ve el cambio. Me parece que el update no va a funcionar porque consultas algo que todavia no ocurrió.
Está pueseto en el trigger afterdelete?
Está after, pero lo curioso es que funciona bien excepto cuando el count da 0 De todas formas como esta consulta actualiza toda la tabla, la modifique solo para la relacion con el registro borrado UPDATE Datos_tene as dt, Ficheros2 as f2 SET dt.ficherosasociados=(SELECT count(f2.id_Datos_tene) FROM Ficheros2 as f2 WHERE f2.id_Datos_tene=dt.COD_FINCA) where dt.COD_FINCA=OLD.id_Datos_tene Cambia el "f2.id_Datos_tene" por "OLD.id_Datos_tene" Gracias por la ayuda
El día 19 de octubre de 2014, 18:09, admin-listas <admin-listas@satel-sa.com> escribió:
Dos tablas una a muchas
UPDATE Datos_tene as dt, Ficheros2 as f2 SET dt.ficherosasociados=(SELECT count(f2.id_Datos_tene) FROM Ficheros2 as f2 WHERE f2.id_Datos_tene=dt.COD_FINCA) where dt.COD_FINCA=f2.id_Datos_tene
Cada vez que se borra un registro en Ficheros2 se ejecuta el disparador para actualizar el numero de registros asociados a Datos_tene y que se guardan en Datos_tene.ficherosasociados
En realizad se ejecuta cuando se inserta y se borra, pero solo tengo el problema despues de borrar un registro y este es el ultimo asociado, ya que deberia dar cero, pero nunca cambia el campo a 0, siempre se queda en 1.
Sera una chorrada pero ya estoy espeso y esto no es lo mio.
saludos
-- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
participants (3)
-
admin-listas
-
Francisco F.
-
Maxi