Показать сообщение отдельно
Старый 02.12.2016, 09:41   #6  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Цитата:
Сообщение от Pandasama Посмотреть сообщение
Хм, странно.
Попроверяю ещё, хотя когда я сделал throw error в written, часть данных у меня в базу оказались записанными.
Как я понял, это работает так:
Предположим есть несколько таблиц на форме связанных по inner/outer join.
При сохранении записей на каждом DataSource вызывается validateWrite и writing без транзакции, если везде всё прошло успешно, то система (где-то в ядре вызывает super() как на write) открывает транзакцию и записывает все данные в одной трнзакции в БД, закрывает транзакцию, после чего на каждом DataSource начинается вызов written. Т.о. взять и обернуть writing/written с вызовом super() между ними в одну транзакцию у меня не получилось и это очень печально