Стратегии редактирования введены в классе QSqlTableModel.
Итак поведение модели данных четко разделяется на три стратегии редактирования, которые надо учитывать.
При OnFieldChange модель данных при изменении поля делает как обычно setData , потом сразу записывает в базу данных через функцию updateRowInTable и потом делает новый запрос select к таблице.
Стратегия OnRowChange похожа на OnFieldChange, редактирование происходит на внутреннем буфере editBuffer (это обычный QSqlRecord). И только при переходе к редактированию другой строки происходит сначала запись предыдущей строки в базу данных. Можно также ускорить процесс вызова записи вызвав функцию submit.
Третий вариант стратегии редактирования OnManualSubmit особенный. Тут все изменения накапливаются в кеше , контейнер cache. И только явный вызов функции submitAll инициализирует процесс записи в базу данных.
Все модели данных вызывают в результате функции updateRowInTable, insertRowIntoTable , на вход которым передается QSqlRecord.
В QSqlRecord присутствуют все поля таблицы, но только помеченные generated=true, будут записываться в базу данных.