Monitorowanie wartości znajdującej się w bazie mySql

0

Hej :)
Istnieje jakiś sposób, aby wyłapywać zmianę wartości jakiegoś rekordu w mySql? Bo mógłbym utworzyć timer i czytać tą wartość, ale może jest jakieś lepsze rozwiązanie?

1

Są niby triggery, ale lepiej po prostu powiedz, co chcesz osiągnąć.

0

Dodaj kolumnę do tabeli gdzie będziesz przechowywać czas ostatniego update'u. Zrób triggera w bazie, który będzie się odpalał przy każdym update'cie tabeli, a w C# zrób timer, w którym będziesz obserwować zmianę daty i już.

0

Wartości bool w bazie danych:
flaga1 - ktoś jest zalogowany na konto true/false
flaga2 - Obecnie zalogowany uzytkownik ma się natychmiast wylogować true/false

  1. Geneza jest taka, że jak ktoś się zaloguje na dane konto flaga1 zmienia się na true.
  2. Jeżeli ktoś inny będzie się próbował zalogować na to samo konto wtedy flaga sygnalizująca potrzebę wylogowania się ustawia na true.
  3. Uzytkownik aktualnie zalogowany otrzymuje komunikat, że ma się wylogować, a drugi uzytkownik obserwuje tą zmienną i oczekuje na pierwszą flagę aż będzie false (czyli że może się zalogować).
2

Wszystkie trzy punkty da się bardzo ładnie obrobić na poziomie aplikacji.

Ad 1 - Zwyczajnie ustawiasz flagę na true jeżeli użytkownik podał prawidłowe dane logowania;
Ad 2 - Jeżeli flaga1 użytkownika jest ustawiona na true i zostały wpisane prawidłowe dane logowania to idzie update ustawiający flagę2 na true;
Ad 3 - Robisz timer sprawdzający flagi i robiący różne rzeczy w zależności od tego co chcesz osiągnąć.

Nawet triggerów pisać nie musisz do tego. Samo sprawdzanie flag można zrobić prostym SELECT'tem.

BTW: to trochę bez sensu. Nie pozwalasz użytkownikowi zalogować się z kilku miejsc jednocześnie. Lepiej robić tabelę w relacji Jeden użytkownik kilka sesji i tam przechowywać aktywne sesje.

0

Co masz na myśli mówiąc aktywne sesje? trzymać ID zalogowanych użytkowników w oddzielnej tabeli?

1

Plus np. czas zalogowania etc... Tylko będziesz musiał stworzyć mechanizm zarządzania np. zerwanymi sesjami, reconnectami i w ogole. Oczywiście w zakresie jaki jest potrzebny. Twoja wola jaki stopień zarzadzania zrobisz.

Możesz przy pierwszym logowaniu rozdawać id sesji z czasem trwania. Jak klient zerwie sesję i podłączy sie ponownie to po tym id zapadnie decyzja czy sesję zerwać, bo jest po terminie czy np. trzymać dłużej z wszystkimi tego ficzerami jakie zaproponujesz klientom :-)

A przedawnione czy zakończone sesje możesz logować i będziesz miał ładną historię dostępu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1