Я думаю, вам следует подумать о том, чтобы сделать что-то из следующего:
Вместо использования QSqlTableModel
в качестве модели я бы реализовал свою собственную модель в качестве подкласса QAbstractTableModel
.Это позволит вам в значительной степени контролировать то, что вы можете делать с точки зрения манипулирования данными.
Одна вещь, которая потребуется для этого, заключается в том, что для определенных полей в таблице вам потребуется реализовать подкласс QAbstractItemDelegate
, который будетразрешить изменение данных в таблице, так как я уверен, что вы не хотите, чтобы пользователи могли обновлять любое поле в таблице, так как, например, primary key
, скорее всего, следует оставить в покое.
Для вопроса 2Я бы предложил реализовать поле с именем transaction_counter
для каждой строки, чтобы вам не приходилось select
каждой строке таблицы, только обновленные; transaction_counter
будет обновляться при каждом обновлении строки, а новая будет вставленана новый ряд вставить.Одна вещь, которая потребуется, - это то, что счетчик уникален по всей таблице.Например, если начальное состояние таблицы: row1 has counter = 0 and row2 has counter = 0
.Если row1
обновляется, counter
устанавливается на 1
.Когда row1
затем обновляется снова, counter
на нем устанавливается на 2
.Когда row2
теперь обновляется, counter
для него установлено на 3
и т. Д. Вы, безусловно, можете выполнять обновление данных сейчас, используя QTimer
, и это будет гораздо более выгодно, например, для проверки данных, поскольку один пользователь можетобновлять ту же таблицу, что и другой пользователь с той же ролью.
Для вопроса 3. Я не вижу никаких причин, почему нет пользовательских моделей, и особенно если вы решили отделить данные от модели, вы можете управлять данными по отдельности.с его дисплея.Вроде реализации Data->Model->View->Controller
.Каждый из них может поддерживаться отдельно, если у вас есть механизм обратной связи для ваших делегатов.
Для вопроса 4. Ответ точен, или вы можете реализовать триггер в своем приложении.
Надеюсь, что этопомогает.Счастливого Нового года!