Re: [opensuse-es] Posible fallo de los disparadores en MariaDB
CREATE TRIGGER `cuentaficheros` AFTER INSERT ON `Ficheros2` FOR EACH ROW
UPDATE Datos as dt, Ficheros2 as f2 SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA group by f2.id_Datos) where dt.COD_FINCA=NEW.id_Datos
yo cambiaria esta actualizacion porque tienen una ambiguedad en los alias f2, ademas que no nesecitas hacer referencia a Fichero2 para contar. UPDATE Datos as dt SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA ) where dt.COD_FINCA=NEW.id_Datos Igualmente el group by está de mas porque ya filtraste solo para ese id y no va a agrupar nada, reduces el tiempo de respuesta. La prueba manual no es lo mismo que está escrito en el trigger.
Lo dicho, a mi no me ha fallado nunca. Pero se que falla porque la gente mete datos en Ficheros2 y luego tengo que pasar una sql a parte para que haga bien el recuento
UPDATE Datos as dt SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA group by f2.id_Datos)
saludos
-- 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 26/11/2014 a las 19:38, Maxi escribió:
CREATE TRIGGER `cuentaficheros` AFTER INSERT ON `Ficheros2` FOR EACH ROW
UPDATE Datos as dt, Ficheros2 as f2 SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA group by f2.id_Datos) where dt.COD_FINCA=NEW.id_Datos
yo cambiaria esta actualizacion porque tienen una ambiguedad en los alias f2, ademas que no nesecitas hacer referencia a Fichero2 para contar.
UPDATE Datos as dt SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA ) where dt.COD_FINCA=NEW.id_Datos
Hechas las modificaciones ahora a ver si no les falla. Creando filas en ficheros y borrando directamente con el phpMyAdmin funciona bien Como dato curioso el trigger lo hago con phpMyAdmin y lo del idetando no le ha parecido muy bien. Tendre que actualizar la version saludos
Igualmente el group by está de mas porque ya filtraste solo para ese id y no va a agrupar nada, reduces el tiempo de respuesta.
La prueba manual no es lo mismo que está escrito en el trigger.
Lo dicho, a mi no me ha fallado nunca. Pero se que falla porque la gente mete datos en Ficheros2 y luego tengo que pasar una sql a parte para que haga bien el recuento
UPDATE Datos as dt SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA group by f2.id_Datos)
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 26/11/14 a las 23:59, admin-listas escribió:
Como dato curioso el trigger lo hago con phpMyAdmin y lo del idetando no le ha parecido muy bien. Tendre que actualizar la version
No se pueden hacer estas cosas con sueño : http://es.wikipedia.org/wiki/Indentaci%C3%B3n aunque la RAE parece que no lo reconoce, sustituir por sangrado (parece que matemos a alguien), y mira que últimamente aceptan cualquier cosa. -- 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 día 26 de noviembre de 2014, 19:59, admin-listas <admin-listas@satel-sa.com> escribió:
El 26/11/2014 a las 19:38, Maxi escribió:
CREATE TRIGGER `cuentaficheros` AFTER INSERT ON `Ficheros2` FOR EACH ROW
UPDATE Datos as dt, Ficheros2 as f2 SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA group by f2.id_Datos) where dt.COD_FINCA=NEW.id_Datos
yo cambiaria esta actualizacion porque tienen una ambiguedad en los alias f2, ademas que no nesecitas hacer referencia a Fichero2 para contar.
UPDATE Datos as dt SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA ) where dt.COD_FINCA=NEW.id_Datos
Hechas las modificaciones ahora a ver si no les falla. Creando filas en ficheros y borrando directamente con el phpMyAdmin funciona bien
Como dato curioso el trigger lo hago con phpMyAdmin y lo del idetando no le ha parecido muy bien. Tendre que actualizar la version
El identado es cosa mia, todo amontonado no es legible y ayuda a a ver las partes de una consulta. -- 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 26/11/2014 a las 23:59, admin-listas escribió:
El 26/11/2014 a las 19:38, Maxi escribió:
CREATE TRIGGER `cuentaficheros` AFTER INSERT ON `Ficheros2` FOR EACH ROW
UPDATE Datos as dt, Ficheros2 as f2 SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA group by f2.id_Datos) where dt.COD_FINCA=NEW.id_Datos
yo cambiaria esta actualizacion porque tienen una ambiguedad en los alias f2, ademas que no nesecitas hacer referencia a Fichero2 para contar.
UPDATE Datos as dt SET dt.ficherosasociados=(SELECT count(f2.id_Datos) FROM Ficheros2 as f2 WHERE f2.id_Datos=dt.COD_FINCA ) where dt.COD_FINCA=NEW.id_Datos
Hechas las modificaciones ahora a ver si no les falla. Creando filas en ficheros y borrando directamente con el phpMyAdmin funciona bien Pues más maderaaaaa. No funciona, pero solo a los demás y a veces. Todas las pruebas que puedo hacer salen bien.
Seguro que es una tontería, pero anda que no cuesta encontrarla. 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
participants (3)
-
admin-listas
-
Francisco F.
-
Maxi