Това със стартирането на НОВА транзакция ми се струва неточно.
Нека си представим следната ситуация:
1. Стартираме транзакция
2. Операция О1 -> ok
3. Операция О2 -> error
4. Операция О3 -> ok
5. В зависимост от резултатите клиента тук решава Commit или Rollback
За Rollback е лесно - отменя се всичко
Но за Commit трябва да се потвърдят О1 и О3.
Ако е вярно това със неявния Rollback и стартиране на нова транзакция, то Commit в т.5 би потвърдил само О3.
Ако в MySQL се потвърждава само О3 - има нещо гнило.
Вероятно става въпрос по-скоро за Rollback до неявен Savepoint в началото на всяка операция
За Dakota:
Клиента решава Commit или Rollback. Не сървъра !!!
Сървъра има задължението да информира за успеха/неуспеха на всяка операция и да потвърди всички успешни при желание на клиента (Commit) или да отмени всички при желание на клиента (Rollback).Редактирано от NDeu на 14.12.09 10:18.