Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-11-2015
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 19
JULIPO Va por buen camino
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
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe
Responder Con Cita
  #2  
Antiguo 16-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Supongo que mysql tendrá triggers (eventos que se disparan al insertar, editar y borrar registros)
Responder Con Cita
  #3  
Antiguo 16-11-2015
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 19
JULIPO Va por buen camino
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
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe
Responder Con Cita
  #4  
Antiguo 16-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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.
Responder Con Cita
  #5  
Antiguo 17-11-2015
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 19
JULIPO Va por buen camino
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
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe
Responder Con Cita
  #6  
Antiguo 17-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por JULIPO Ver Mensaje
... 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.
Responder Con Cita
  #7  
Antiguo 17-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
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"

Última edición por AgustinOrtu fecha: 17-11-2015 a las 01:08:48.
Responder Con Cita
  #8  
Antiguo 17-11-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Detectar cambio en Listbox Anel Hernandez Varios 7 22-10-2012 20:26:33
Detectar cambio en componentes capo979 Varios 5 24-04-2008 18:10:22
Detectar cambio de posicion en dataset Ezecool Conexión con bases de datos 7 10-07-2007 21:53:19
Detectar cambio de ItemIndex en ComboBox ixMike OOP 5 19-10-2006 21:39:03
Detectar el cambio de un directorio NeWNeO API de Windows 2 03-01-2005 10:36:48


La franja horaria es GMT +2. Ahora son las 12:22:00.


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
Copyright 1996-2007 Club Delphi