21.05.2009, 20:20 | #1 |
Участник
|
Вопросы о псевдотранзакционности
Доброго времени суток всем!
Я сейчас пишу плагины под СРМ 4.0, во многих стоит как требование выполнение под одной транзакцией. Поскольку транзакционность в чистом виде, насколько я понял, невозможна при работе через веб-сервисы, то было принято решение хотя бы сделать ручной откат внесенных изменений в случае перехвата эксепшена. Собственно первый вопрос - нормальная ли это практика, или есть более надежные способы решения вопроса транзакционности? Но как бы там ни было, с ручным восстановлением внесенных изменений все было хорошо, пока не понадобилось откатывать удаление. Поскольку запись реально не удаляется, а меняется только флаг удаления, то новую запись с тем же ИД вставить нельзя. Я вижу тут только два варианта: либо ансаппорт и простая смена флага в таблице, либо саппорт - и создание новых записей со старыми данными одновременно с геморройной сменой ИД во всех сущностях, которые ссылаются на удаленные записи (с необходимостью дорабатывать плагин по мере появления новых ссылок). Оба способа мне видятся одинаково плохими. Какой из них выбрать, пока не решил. Очень зол на МС за отсутствие легальной функции восстановления после удаления. Есть ли у кого мысли на тему, какой все-таки лучше выбрать способ? П.С. В промежутке 22.05 - 24.05 буду без инета, так что ответить на возможные вопросы смогу не раньше понедельника, но все же надеюсь услышать некоторые соображения. Заранее спасибо. |
|