cornholio666
23.12.2006, 12:41:33
Witam,
Jak w temacie czy jest sens robić transakcje w takim przypadku
$query = SELECT id FROM tab1 ....
$id = pobrane id z powyższego selecta
$query = INSERT INTO tab1 VALUES (wart1, wart2, $id )
.
.
.
Czy warto objąć calość transkacja ?
nospor
23.12.2006, 12:55:39
a niby co ta tranzakcja mialaby robic? Nic.
Ze niby jak sie insert nie powiedzie to ty selecta anulujesz? Tranzkacja ma sens gdy masz kilka nastepujacych zmian na bazie i gdy ktoras sie nie powiedzie to chcesz anulowac wczesniejsze.
wipo
23.12.2006, 13:44:31
Przyznaje racje nosporowi
Na marginesie lepszym rozwiązaniem byłoby zastosowanie pola auto_increment, które rozwiązałoby problem Twoich transakcji (przy poprawnym wpisie dostawniesz ID lub się nic nie wpisze i problem z głowy)
cornholio666
23.12.2006, 17:47:36
@nospor - ok zrozumiałem
@wipo - tab1 jest tylko do odczytu bez mozliwosci zapisu
wipo
23.12.2006, 22:21:31
Nie chcę być złośliwy ale w przykładzie podałeś INSERT...........
Pozatym transakcje służą między innymi do cofnięcia operacji typu UPDATE, INSERT itp a nie SELECT * FROM cośtam
za017
28.12.2006, 13:28:47
Transakcje służą przede wszystkim zapewnieniu spójności bazy danych, do której może uzyskiwać dostęp wielu użytkowników. Jeśli Twój skrypt ma działać na serwerze i będzie go wywoływać wiele osób, musisz użyć transakcji. Transakcja gwarantuje:
1. NIEPODZIELNOŚCI operacji przeprowadzonej na bazie danych: albo operacja zostanie wykonana w całości, ale wcale
2. WYŁĄCZNOŚĆ dostępu do tabel: jeśli Twój skrypt odwołuje się do jakiejś tabeli, każdy inny skrypt (lub ten sam skrypt wywołany w tym samym czasie przez innego klienta) będzie musiał poczekać na zakończenie transakcji (jej zatwierdzenie albo anulowanie) zanim będzie mógł uzyskać dostęp do bazy danych.
Wyobraź sobie taką sytuację: dwie różne osoby odczytują z pewnej tabeli ilość dostępnych w sprzedaży przedmiotów i jednocześnie składają zamówienie na ostatnią sztukę: która z nich kupi ten przedmiot ? Transakcja uniemożliwia wystąpienie takiej sytuacji, przedmiot kupi ta osoba, która pierwsza uzyska (za pośrednictwem skryptu) dostęp do bazy danych.
W takiej sytuacji użycie transakcji jest jak najbardziej wskazane, nawet przy korzystaniu jedynie z select. gdyż pobrana z bazy danych zawartość może decydować o dalszym przebiegu wykonania skryptu, który może potem te dane modyfikować.
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.