MySQL Trigger

0

Witam.
Potrzebuję trigger after update który zapisze do zmiennej wartość która została nadpisana w tym rekordzie poleceniem update. Następnie odczeka 30 sekund i sprawdzi czy wartość ze zmiennej jest identyczna z tą która jest aktualnie w bazie ( czy w ciągu tych 30 sekund nie zmieniła się) jeśli jest taka sama trzeba zmienić wartość kolumny active na 0 w tym rekordzie. Walczę z tym już 8h i nic nie działa. Za każde nakierowanie w dobrą stronę będę wdzięczny

2

Widzę kolejny post, które razem kręcą koło jakiegoś zagadnienia ... To mocno wygląda na XY Problem.

O jakie zagadnienie NAPRAWDĘ chodzi?

0

Zagadnienie wygląda następująco:
Klient (aplikacja mobilna)łączący się z bazą danych przez http request.
Klient z poziomu aplikacji mobilnej uruchamia pewną maszynę która na bieżąco pobiera status z bazy danych.
Każde uruchomienie maszyny to nowy rekord w tabeli uruchomienia. Każde aktywne uruchomienie maszyny aktualizuje rekord nowymi danymi z aplikacji mobilnej (klienta) co 10s.
Jeżeli klient nieoczekiwanie straci internet, wyjmie baterie z telefonu itp trzeba zmienić wartość active w danym rekordzie z tabeli uruchomienia na 0 oraz wartość active z tabeli maszyny na 0 . Maksymalny czas jaki maszyna może być uruchomiona bez połączenia z klientem wynosi maksimum 40s.
Chciałem rozwiązać to poprzez triggera, który uruchomiony po update odczekał by jeszcze 30 sekund i sprawdził czy w ciagu 30 sekund jego oczekiwania wartość count z tabeli uruchomienia zmieniła się. Jeśli nie zmienił by on wartość active z tabeli uruchomienia na 0 oraz wartość active z tabeli maszyny (id maszyny znajduje się w tabeli uruchomienia) także na 0

3

Sposób z triggerami nie ma szans dobrze działać. Triggery nie są do tego. Już lepsze byłyby procedury składowane ale one też nie są dobrym rozwiązaniem w tym wypadku.
Patrząc na Twoje poprzednie posty to szukasz raczej takiego rozwiązania:
https://stackoverflow.com/questions/15273570/continue-processing-php-after-sending-http-response/15273676
Czyli skrypt php który działa po zakończeniu połączenia z klientem.
Ewentualnie jakiś cron i okresowe sprawdzanie wpisów w bazie danych.

0

Zrobiłem tak jak tutaj https://stackoverflow.com/questions/15273570/continue-processing-php-after-sending-http-response/15273676 Skrypt działa po zakończeniu połączenia z klientem. Lecz gdy klient chce nawiązać ponownie połączenie musi poczekać aż poprzedni skrypt się zakończy. Używam sleep(30). Jakieś rady?

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