Cytat(omeck @ 7.07.2009, 15:27:04 )

Autorowi nie do końca o to chodzi.
W sumie dobre pytanie. Rollback jest wykonywany na wskutek przechwycenia wyjątku, który wyrzuca adapter, wskutek błędu, który wyrzuca baza... Nigdy w sumie nie miałem takiego problemu, aby cofać zmiany jeśli kod php jest nieprawidłowy - nie można go przebudować?
Dokładnie. Mi nie chodzi o doskonale opisaną metodę roolback w sytuacji kiedy jedna zapytanie na dwa, się nie powiedzie. Wtedy tam właśnie mamy przechwytywanie wyjątku, i roolback.
Mi chodzi o prostą sytuację.
Przykład
1) generuje użytkownikowi nowe hasło
2) dodaje do bazy danych
3) Wysyłam e-mail - zmieniłem Ci hasło
Nastąpiła awaria bo wewnętrzny serwer smtp poleciał. Tak więc e-mail nie został wysłany. Łapie mi to wyjątek w php, odpowiedni w bibliotece stwierdzający awarie serwera
if awaria {
Wiadomość nie może być wysłana, serwer smtp leży.
}
I teraz trzeba cofnąć te zmianę w serwerze mysql, ponieważ, zmieniliśmy hasło, ale nie dotrze ono do użytkownika.
Potrzebuję takie wywołanie
if awaria
{
cofnij ostatnie zapytania, które były np po "begin trans action "
}
Naprawdę długo szukałem tego na Google, i wszędzie przykłady dotyczyły przechwytywania, błędów w zapytaniach.
Czemu więc po prostu wywołanie roolback() nie odnosi sukcesu.
Jeżeli ma prawo reagować na błąd w mysql to czemu nie może też php wywołać procedury cofania.