Цитата:
Сообщение от
Pandasama
Хм, странно.
Попроверяю ещё, хотя когда я сделал throw error в written, часть данных у меня в базу оказались записанными.
Как я понял, это работает так:
Предположим есть несколько таблиц на форме связанных по inner/outer join.
При сохранении записей на каждом DataSource вызывается validateWrite и writing без транзакции, если везде всё прошло успешно, то система (где-то в ядре вызывает super() как на write) открывает транзакцию и записывает все данные в одной трнзакции в БД, закрывает транзакцию, после чего на каждом DataSource начинается вызов written. Т.о. взять и обернуть writing/written с вызовом super() между ними в одну транзакцию у меня не получилось и это очень печально