Все классические примеры работы с транзакциями идут в упрощенном виде:
try{
startTransaction
query
commitTransaction
}
catch()
{
rollbackTransaction
}
В реальной жизни все сложнее. В Joomla, насколько я понимаю, есть singleton объект JDatabase, т.е. на этапе обращения запроса к серверу, создается одно соединение. Правильно ли я понимаю, что вот такой код будет работать аналогично:
try{
startTransaction
Метод1_который_читает_и_пишет_в_БД
result = Метод2_который_читает_и_пишет_в_БД
if(result === false)
{
rollbackTransaction
}
Метод3_который_читает_и_пишет_в_БД
commitTransaction
}
catch()
{
rollbackTransaction
}
Т.е. все изменения, которые были внесены этими методами будут откачены или закоммичены.
И еще уточнение, в Joomla транзакция стартует по умолчанию как START TRANSACTION WITH CONSISTENT SNAPSHOT?