通过Qt/QSqlTableModel(C++)轮询MySQL数据库

通过Qt/QSqlTableModel(C++)轮询MySQL数据库,c++,sql,mysql,qt,polling,C++,Sql,Mysql,Qt,Polling,我使用Qt通过QSqlTableModel/QSqlDatabase/etc连接到MySQL数据库,尽管这个问题更一般 获取实时更新数据库表视图的最佳方法是什么?一个选项是不断轮询整个表,并在QSqlTableModel中反复调用select方法。 这似乎效率很低,但是否每次都将整个表从MySQL传递到Qt 另一种选择是使用另一个表,它作为日志表,跟踪所有更新/更改,然后您可以轮询此日志表,只检查新条目..哪个更有效?。然而,这样会丢失很多QSql内置功能 或者我应该有一个我轮询的计数器变量,如

我使用Qt通过QSqlTableModel/QSqlDatabase/etc连接到MySQL数据库,尽管这个问题更一般

获取实时更新数据库表视图的最佳方法是什么?一个选项是不断轮询整个表,并在QSqlTableModel中反复调用select方法。 这似乎效率很低,但是否每次都将整个表从MySQL传递到Qt

另一种选择是使用另一个表,它作为日志表,跟踪所有更新/更改,然后您可以轮询此日志表,只检查新条目..哪个更有效?。然而,这样会丢失很多QSql内置功能

或者我应该有一个我轮询的计数器变量,如果它增加,我知道刷新整个表吗


所有这些方法似乎都有点混乱。。你推荐什么?谢谢。

这确实是一个MySQL问题,但我有答案!:

实际上,您想要的是每X秒轮询一次数据库。但是,如果您创建一个MySQL触发器,以便在插入、更新和/或删除行时,它将创建一个指示符,那么这将提高效率

我认为应该创建一个触发器,将修改后的行插入到第二个表中。Qt程序的轮询应执行以下操作:

锁定第二个修改表 阅读第二个修改表的全部内容 删除第二个修改表的所有内容 解锁第二个修改表 如果不锁定表,可能会意外删除在读取和删除之间插入的新行。但是,如果希望/需要避免锁定,只需读取所有内容,然后根据每行插入到修改表中时生成的唯一ID删除检索到的行

MySQL触发器的常见问题解答和文档如下:

锁定/解锁表的文档如下: