Тонкая работа с Транзакциями

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Dark Gard
Сообщения: 79
Зарегистрирован: 2016.06.06, 11:39

Тонкая работа с Транзакциями

Сообщение Dark Gard »

Доброго дня.
Использую MySql 5.7 и Yii Version 2.0.12.

У меня ситуация следующая. Веду лог в таблицу БД (возможно несколько таблиц если еще важны доп данные сохранять).

Соответственно, когда сохраняю данные в других таблицах (может быть не сколько если есть изменение связанных данных) и эти операции не удались, то откатываю изменения в БД. А так как коннект для всех моделей один и тот же, то и исчеркают записи в лог таблице.

Есть ли какая нибудь возможно сказать что транзакция не должна распространятся на такие-то таблицы или на оборот только на определенные?

Не ужели для этого мне нужно создавать несколько коннектов (коннект только ко всем лог таблицам + коннект ко всем основным таблицам) и другого пути нет?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Тонкая работа с Транзакциями

Сообщение andku83 »

лог вести вне транзакции?
Dark Gard
Сообщения: 79
Зарегистрирован: 2016.06.06, 11:39

Re: Тонкая работа с Транзакциями

Сообщение Dark Gard »

Не всегда возможно. я бы хотел, но тут именно та ситуация когда все приходит внутри транзакции.
Dark Gard
Сообщения: 79
Зарегистрирован: 2016.06.06, 11:39

Re: Тонкая работа с Транзакциями

Сообщение Dark Gard »

Например, делается удаленная выгрузка данных из другого ресурса.
По окончанию выгрузки нужно удаленному ресурсу отдать команду что выгрузка произошла успешно. Если эта команда прошла, то транзакцию закрываем, если нет то транзакцию откатываем.
При этом запросы к сторонним ресурсам оформлены отдельным классом и в нем заложено логирование и с точки зрения ООП, все здорово и удобно.

Если удаленному ресурсу сказать что все хорошо до сохранения данных, то в случае не штатной ситуации будет плохо. Повторно данные мне уже ни кто не отдаст.
Если после сохранения и команда об успешно выгрузке не пройдет, то мне надо как-то удалить данные - идеально транзакция.
Ответить