Witam,
w jaki sposób można sprawdzić czy dane w bazie mySQL uległy zmianie. Oczywiście chciałbym uniknąć rozwiązania polegającego na ponownym wysłaniu zapytania 'SELECT .....', bo musiał bym to robić co kilka sekund przy większej liczbie użytkowników kożystających z mojej aplikacji. Czy baza mySQL wysyła w ogóle takie informacje do komponentów dbExpress i czy jest w ogóle jakaś baz, która ma taki mechanizm?
Dice napisał(a)
w jaki sposób można sprawdzić czy dane w bazie mySQL uległy zmianie. Oczywiście chciałbym uniknąć rozwiązania polegającego na ponownym wysłaniu zapytania 'SELECT .....', bo musiał bym to robić co kilka sekund przy większej liczbie użytkowników kożystających z mojej aplikacji.
w MySQLu nie znam innej metody.
Można oczywiście dodać tabelę dodatkową, która wyglądała by mniej więcej tak
ChangeLog
*id
ColName
ChangeTime
i w momencie zmiany w jakiejś tabeli (najlepiej w trigerze) robić
UPDATE changelog SET changetime = now() WHERE colname = 'nazwa_aktualizowanej_tabeli'
a potem tylko odpytywać tą tabelę o czas ostatniej aktualizacji i poruwnywać go z tym, który pamiętała aplikacja
Czy baza mySQL wysyła w ogóle takie informacje do komponentów dbExpress
nie
czy jest w ogóle jakaś baz, która ma taki mechanizm?
z darmowych FB/IB i to nawet działa :)
dodaj ze triggery ma dopiero mysql 5.0 zeby kolega nie szukal na marne
w sieci lokalnej mam rozwiązanie polegające na rozsyłaniu pakietu UDP o zmianie danych w bazie.w przypadku jak jeden klient zmieni zawartość tabeli, to klient ten wysyła info w postaci pakietu UDP który może zawierać dane np. co się zmieniło,jaka tabela itp
jak juz tak plyniemy to mozemy zrobic aplikacje trojwarstwową, masz baze, masz SBD i masz klienta, lub wielu, i teraz wystarczy tylko SBD zrobic zmienna "nazwa_tabeli: boolean" i metode ktora zwraca dana informacje do klienta ktory sprawdza to co powiedzmy sekunde, oczywiscie mozna isc w druga strone, i np rejestrujac kazdego klienta w serwerze dcom, i po zmianie w tabeli starac sie wyslac info do kazdego klienta, ale z tym to juz troche wiecej roboty
to ja może inaczej zapytam - po co Ci taka funkcjonalność?
Czyżbyś chciał uszczęśliwić usera na siłę oferując mu automatyczne odświeżanie :>
Nie wiem jak inni ale ja bym chyba kompa razem z takim programem przez okno wywalił jakby mi się co sekundę dbgrid odświeżał