Доброго дня.
Использую MySql 5.7 и Yii Version 2.0.12.
У меня ситуация следующая. Веду лог в таблицу БД (возможно несколько таблиц если еще важны доп данные сохранять).
Соответственно, когда сохраняю данные в других таблицах (может быть не сколько если есть изменение связанных данных) и эти операции не удались, то откатываю изменения в БД. А так как коннект для всех моделей один и тот же, то и исчеркают записи в лог таблице.
Есть ли какая нибудь возможно сказать что транзакция не должна распространятся на такие-то таблицы или на оборот только на определенные?
Не ужели для этого мне нужно создавать несколько коннектов (коннект только ко всем лог таблицам + коннект ко всем основным таблицам) и другого пути нет?
Тонкая работа с Транзакциями
Re: Тонкая работа с Транзакциями
лог вести вне транзакции?
Re: Тонкая работа с Транзакциями
Не всегда возможно. я бы хотел, но тут именно та ситуация когда все приходит внутри транзакции.
Re: Тонкая работа с Транзакциями
Например, делается удаленная выгрузка данных из другого ресурса.
По окончанию выгрузки нужно удаленному ресурсу отдать команду что выгрузка произошла успешно. Если эта команда прошла, то транзакцию закрываем, если нет то транзакцию откатываем.
При этом запросы к сторонним ресурсам оформлены отдельным классом и в нем заложено логирование и с точки зрения ООП, все здорово и удобно.
Если удаленному ресурсу сказать что все хорошо до сохранения данных, то в случае не штатной ситуации будет плохо. Повторно данные мне уже ни кто не отдаст.
Если после сохранения и команда об успешно выгрузке не пройдет, то мне надо как-то удалить данные - идеально транзакция.
По окончанию выгрузки нужно удаленному ресурсу отдать команду что выгрузка произошла успешно. Если эта команда прошла, то транзакцию закрываем, если нет то транзакцию откатываем.
При этом запросы к сторонним ресурсам оформлены отдельным классом и в нем заложено логирование и с точки зрения ООП, все здорово и удобно.
Если удаленному ресурсу сказать что все хорошо до сохранения данных, то в случае не штатной ситуации будет плохо. Повторно данные мне уже ни кто не отдаст.
Если после сохранения и команда об успешно выгрузке не пройдет, то мне надо как-то удалить данные - идеально транзакция.