Temat był wałkowany wiele razy ale nie znalazłem informacji w 100% na moje nurtujące pytanie otóż.
Mam tabelę o mechaniźmie składowania MyISAM i teraz:
Do tabeli są dodawane (INSERT) lub modyfikowane (UPDATE) rekordy od wielu użytkowników dotyczące sessji połączenia.
Chciałem wykonać skrypt ktory odpalany byłby za pomocą cron-a aby przenosił wpisy do tabeli archiwum gdy `czas_zakonczenia_sessji` is not null.
A następnie w skasować przeniesione wiersze.
Dlatego wykonuje zapytanie:
1) kopiuje wiersze do tabeli archiwum
INSERT IGNORE INTO archiwum SELECT * FROM sesje WHERE czas_zakonczenia_sessji IS NOT NULL
2) kasuje wiersze z tabeli sesje
DELETE FROM sesje WHERE czas_zakonczenia_sessji IS NOT NULL
no ale co się stanie jeśli "jakiś" użytkownik zakończy sesje między zapytaniem 1 a 2.
wtedy jego rekord nie zostanie skopiowany do archiwum ale już zostanie wykasowany przez zapytanie 2.
co sprawi że dany rekord zniknie.
i teraz wyczytałem, że istnieje taka możliwość jak blokowanie tabel na zapis.
czyli przed pytaniem 1 blokowałbym tabele na zapis a po zapytaniu 2 bym już tabele odblokowywał.
I tu jest moje pytanie. Co stanie się z zapytaniami na czas kiedy jest zablokowana tabela??
1) Czy wykonają się one w kolejności zgłoszeń po odblokowaniu tabeli?
2) Czy też użytkownik otrzyma błąd iż tabela jest zablokowana i zapytanie się nie wykona?
Osobiście zależało by mi na rozwiązaniu 1. Ponieważ nie mam możliwości w aplikacji użytkowników
wysyłać powtórnie zapytanie gdy tabela jest zablokowana

Za pomoc wszystkim z góry dziękuję.