SQLite3生成的列未显示在QSqlRelationalTableModel中



我有一个连接到QSqlRelationalTableModel的QTableView。一切都如预期的那样工作,然而,在我的模型中似乎不可能有sqlite3生成的列:

bhd [INTEGER] GENERATED ALWAYS AS (round(d_mess * 130 / bhd_hoehe)) STORED

上面的语句是在sqlite3中添加生成列的默认方式。但它没有出现在我的模型中。当我将该列更改为标准整数列时,它就在那里。生成的列是STORED还是VIRTUAL类型,或者我是否省略了generated ALWAYS关键字,都无关紧要。

这是故意的吗?还是sqlite3驱动程序问题?

视图似乎不受此问题的影响。我知道这更多的是一种变通方法,而不是解决方案,但您可以只使用foreign key和生成的字段创建视图。

例如,我有一个简单的表User,如下所示:

CREATE TABLE User (
ID        INTEGER PRIMARY KEY AUTOINCREMENT
UNIQUE,
name      TEXT,
surname   TEXT,
title      TEXT,
full_name         GENERATED ALWAYS AS (title || ' ' || surname || ' ' || name) STORED
);

照原样,没有指向User.full_nameQSqlRelation可以工作,正如您所指出的。然而,我创建了一个类似的简单视图

CREATE VIEW UserFullNameView AS
SELECT ID,
full_name
FROM User;

现在以下绑定工作良好

model: QSqlRelationalTableModel
model.setRelation(foreign_field, QSqlRelation('UserFullNameView', 'ID', 'full_name')

相关内容

  • 没有找到相关文章