Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Detectar un cambio en Mysql (https://www.clubdelphi.com/foros/showthread.php?t=89408)

JULIPO 16-11-2015 20:15:09

Detectar un cambio en Mysql
 
Reciban un cordial saludo.

queria preguntar como puedo detectar cambios en una base de datos mysql, el tema es el siguiente hay un servicio que esta conectado a la base de datos y inserta registros de acuerdo a un equipo que genera eventos de temperatura en una maquina.

yo en mi software reviso la tabla cada segundo para ver si se ha insertado un nuevo registro, pero lo que quiero es que cada vez que se inserte un registro o se edite, borre etc pueda en mi programa detectar el cambio sin realizar tanta consultas (1 por segundo) y ahi si hacer la lectura de la tabla.

no se si firedac tenga un componente que haga esto.

de antemano muchas gracias

Casimiro Notevi 16-11-2015 20:28:30

Supongo que mysql tendrá triggers (eventos que se disparan al insertar, editar y borrar registros)

JULIPO 16-11-2015 21:49:06

y como le avisan los triggers a mi programa
 
debo alcarar supongo.

el servicio que inserta los registros en la tabla de Mysql no lo controlo es de terceros y lo unico que hace es tomar datos de un equipo que registra temperatura e insertar estos registros en una tabla de mysql, el trigger claro que funciona pero lo que no veo es como podria este trigger avisarle a mi programa que se inserto un registro en la tabla si como vuelvo a decir no controlo el servicio.

existe un componente en firedac o como se hace esto

Casimiro Notevi 16-11-2015 22:54:27

Pues tal y como he comentado antes, el trigger se dispara cada vez que se inserta, actualiza o borra un registro. No tiene nada que ver el servicio, es algo interno de la base de datos.
Puedes hacer que se inserte un registro que te venga bien, que salga un mensaje a todos los usuarios, etc.
Seguro que se podrá hacer, cualquier base de datos lo permite. Yo apenas conozco mysql, pero seguro que se puede.

JULIPO 16-11-2015 23:10:52

el problema no es que me inserte registros
 
lo que busco es que con el uso no se de algun componente pueda detectar que se hizo la insercion hoy debo leer la tabla cada segundo para detectar los cambio lo que me sobrecarga la base de datos cuando tenemos muchas conexiones, los trigger efectivamente detectan los cambios en la base de datos pero no me comunican esos cambios en mi aplicativo de delphi que es lo que busco el trigger ejecuta instrucciones dependiendo lo programado pero no me envia la alerta a delphi

Casimiro Notevi 16-11-2015 23:13:47

Cita:

Empezado por JULIPO (Mensaje 499468)
... los trigger efectivamente detectan los cambios en la base de datos pero no me comunican esos cambios en mi aplicativo de delphi que es lo que busco el trigger ejecuta instrucciones dependiendo lo programado pero no me envia la alerta a delphi

Con firebird, al menos, sí que se puede. Por eso digo que seguramente mysql también puede.

AgustinOrtu 17-11-2015 00:04:20

Yo tampoco conozco MySQL, pero al parecer no soporta los eventos como lo hace Firebird

A ver si este enalce arroja un poco de luz.


En realidad la pregunta que hay que hacerse es, es realmente importante que todos los usuarios reciban las nuevas modificaciones instantaneamente?

No se como esta construido tu software, es una aplicacion cliente-servidor? Es decir, cada pc se conecta mediante FireDAC a la base de datos MySQL o hay un servidor de aplicaciones en el medio?

Yo crearia un thread que se encarge de verificar si hubo algun cambio en la tabla y de haberlo que mande una alerta(ejecute un proceso que actualize bla bla bla). En realidad eso es basicamente lo que haria el "componente"

roman 17-11-2015 16:44:09

MySQL no cuenta con eventos de este tipo. De todas formas, no hay que asustarse por realizar una consulta cada tantos segundos, siempre y cuando sea una consulta rápida. Puedes usar un trigger para insertar el "evento" en una tabla de cambios y únicamente consultar esa tabla.

// Saludos


La franja horaria es GMT +2. Ahora son las 00:48:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi