Добрый день.
Имеется два способа использовать транзакцию. Вариант (А)
PHP код:
ttsbegin;
while(setEnumerator.moveNext())
{
...
// выбор и обновление данных
}
ttscommit;
Другой вариант (Б)
PHP код:
while(setEnumerator.moveNext())
{
ttsbegin;
...
// выбор и обновление данных
ttscommit;
}
Поскольку данные обновляются в одной транзакции, то вариант (А) предпочтительнее, поскольку откатывается вся транзакция.
В операторах ttsBegin/ttsCommit зашита дополнительная логика на уровне ядра системы, что тоже оставляет метод (А) более предпочтительным.
Некоторые разработчики используют метод (Б) аргументируя тем, что транзакция не блокирует базу. Но ведь как-то разносятся журналы ГК по 100 строк по разным модулям, накладные...
Может выбор должен зависить от магического алгоритма выбора и обновления данных. Но если алгоритм простой (выбор, клиента и обновление у него поля даже с обновлением глобальной адресной книги) считаю, что метод (А) предпочтительнее.
К какому методу склонны вы, обновление каких данных заставляло вас использовать метод (Б)?