Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: transakcje w MySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
mhs
Witam,


Mam następujący problem. Piszę w chwili obecnej skrypt ankiety. Będę chciał, aby użytkownikowi nie wyświetlać wszystkich na raz pytań tylko podzielić je na kilka ekranów. Pola, które już użytkownik wypełni będę chciał zapisywać w bazie. Chciałbym tutaj wykorzystać transakcje. Co jednak się stanie gdy użytkownik nie zakończy ankiety i tak po prostu wyłączy przeglądarkę. Czy istnieje coś takiego aby ustawić czas, po którym system sam wyda polecenie rollback? Pytanie dotyczy MySQL’a.
Dzięki za odpowiedź.
msulik
Może to odpowiedź nie na temat, ale czy nie lepiej zastosować sesje?
Jabol
wydaje mi się, że wszystkie zapytaina które dostaną commit są traktowane jako rollback
delorian
Wszystkie zapytania, które nie dostaną commit są oczywiście traktowane jako rollback. Jednak wtedy gdy istnieje ciągłe połączenie z bazą danych, tak jak to może występować w przypadku serwisów internetowych, rollback nie jest domyślny, przynajmniej do czasu zamknięcia połączenia, co czasem może wystąpić po długim okresie. Próbowałem cosik znaleźć na ten temat w dokumentacji, ale nie za bardzo jest co. Więc teoretycznie fajnie by było taki rollback wykonać co jakiś czas, np. przed zakończeniem połączenia w wywołaniu mysql_close, ale nie piszą jak to by wszystko działało. W takim przypadku rozwiązanie wykorzystujące sesje php jest chyba lepsze.
mhs
Hmm... chyba faktyczne lepsze beda sesje. Mam w zwiazku z tym nastepujace pytanie. W jaki sposob zaprojektowac baze danych. Czy uzasadnione jest stosowanie np. jakiejs tabeli tymczasowej, w ktorej bede przechowywal aktualny stan wypelniania ankiety a dopiero po zakonczeniu przy ostatnim ekranie przekopiuje dane z tej tabeli tymczasowej do mojej glownej tabeli. Wowczas w mojej 'ostatecznej' tabeli pozbede sie sytuacji w ktorej bede mial puste rekordy czyli czegos co nie powinno byc w bazie danych. Tabele tymczasowa bede mogl sobie co jakis czas wyczyscic aby nie zbierac smieci. Czy stosowanie tymczasowych tabel np. w podobnych lub tez innych projektach jest stosowane/dopuszczalne?

Dzieki za dotychczasowe odpowiedzi i te nastepne.
adwol
Wyniki cząstkowe trzymaj w zmiennych sesyjnych. A je możesz trzymać np. w bazie w specjalnej tabeli o takim schemacie:
[sql:1:2fbd55b770]create table sesje (session_id char(32), dane text)[/sql:1:2fbd55b770]
Funkcja session_set_save_handler pozwala na ustawienie swoich funkcji obsługujących przechowywanie danych w sesji, więc nie powinieneś mieć z tym problemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.