QSqlRelationalTableModel 更新问题
在开发一个qt项目时,因为涉及操纵多张表结构,我使用QSqlRelationalTableModel作为我的模型(myModel),将其中一个设定为主表,为相应的列设定引用关系表,设定相应的委托。然后在视图中对其进行增删改查操作,发现对于一个已经存在的记录进行修改时,发现视图中的相应项数据能够更新,但是等到再一次更新整个视图时,被更新的项数据撤销。
打印myModel内容,发现数据确实更新了,进行提交submitAll()后再次更新视图数据就被撤销。这说明submitAll并没能将myModel中的更改提交到数据库中。查看myModel->lastError(),并没有任何错误。这说明更新语句并没有任何错误。重新查看帮助文档,发现使用QSqlRelationalTableModel需注意如下事项:
- The table must have a primary key declared.
- The table’s primary key may not contain a relation to another table.
重新查看我的表结构,如下:
table A 表格语法:
字段 | 说明 |
---|---|
punId | primary key |
caseId | primary key |
typeId | primary key |
我的数据库中的表有主键,满足第一条,但是这个主键包含3个字段,每个字段都是外键,引