![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 510 Pomógł: 1 Dołączył: 27.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
witam
mam małe pytanie dotyczace transakcji w mysql. cala transakcje zaczynam:
nastepnie mam kilka osobnych zapytan o takiej budowie:
a pod koniec:
teraz moje pytanie, poniewaz nie do końca wiem jak działają te transakcje. czy przy takiej budowie w php zapytan, gdy wywali sie przykladowo drugie zapytanie i cala transakcja zostanie cofnieta to co sie stanie z pozostalymi ? zostana pominiete ? czy moze zapisane, ale bez transakcji ? czy jednak jest to zle zapisane i nie powinienem po kazdym zapytaniu wywolywac RollBack ? tylko pod sam koniec sprawdzic czy ktores zapytanie sie wywalilo i tylko wtedy raz wywolac rollback ? prosze o porade (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 78 Dołączył: 4.11.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. zaczynasz transakcję
2. wykonujesz operacje w bazie, sprawdzasz wyniki w php 3. jesli w którymkolwiek zapytaniu wystąpił błąd żadna z operacji na bazie od momentu rozpoczęcia transakcji nie zostanie zapisana jeśli sprawdziłeś sobie rezultaty zapytań i jakiś wynik nie odpowiada Twojemu celowi dajesz rollback i żadna z operacji na bazie od momentu rozpoczęcia transakcji nie zostanie zapisana 4. Jeśli wszystko wg Ciebie jest ok -> dajesz commit i wszystkie operacje od momentu rozpoczęcia transakcji zostaną zapisane Najłatwiej to zrozumieć na najbardziej popularnym przykładzie przelewu bankowego: Jeśli przelewasz komuś kasę to nie może zdarzyć się, że bank pobierze od Ciebie kasę, a później serwer banku wyłoży się zanim pieniądze zostaną przelane do adresata i pieniądze "przepadną". Dzięki transakcjom albo kasa zostanie Tobie pobrana i zapisana na konto adresata, albo nie zmieni się nic. Ten post edytował zordon 28.05.2010, 14:49:55 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 510 Pomógł: 1 Dołączył: 27.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
mniej wiecej kojarzę tylko czy przy moim zapisie to jest poprawnie ? przy kazdym zapytaniu dawac rollback czy tylko pod koniec raz wywolac rollback w przypadku jakichkolwiek bledow. czy moze to nie ma znaczenia, poniewaz obydwie metody są poprawne ?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 511 Pomógł: 143 Dołączył: 13.03.2010 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
każda metoda jest dobra o ile spełnia Twoje oczekiwania. Jeżeli wywołanie raz na końcu rollback zapewni Ci bezpieczeństwo którego oczekujesz, to tak zrób (mniej kodu niż pisanie pod każdym zapytaniem).
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 16:21 |