我一直致力于通过使用视图使我的 sqlite DB 更具动态性。除了全文搜索表之外,这在所有情况下都有帮助。根据 SQLite FTS4 文档 ( https://www.sqlite.org/fts3.html#section_6_2_2 ),在创建全文搜索虚拟表时,有一种方法可以引用表作为内容表。不幸的是,用户仍然负责填充和维护虚拟表,这没有多大意义,但它就是这样。
我最初填充 fts4 表并让它工作的方式是这样的:
创建虚拟表 term_search 使用 fts4(id,name,origin,content,refs, created);
INSERT INTO term_search SELECT id,name,origin,text,refs,created FROM full_text_dict;
这最初运作良好,但不是动态的。
我试图像这样创建“外部内容”fts4 表:
使用 fts4 创建虚拟表 term_search (content="full_text_dict",name, origin,content,refs,created);
INSERT INTO term_search (docid,name,origin,content,refs,created) SELECT id,name,origin,text,refs,created FROM full_text_dict;
SQLite 允许我这样做,但是当我尝试像这样查询表时,我得到:
SELECT * FROM term_search WHERE 内容匹配“数据”;
错误:SQL 逻辑错误或缺少数据库
当我尝试运行完整性检查命令时,我得到了同样的错误:
插入到 term_search(term_search) VALUES('integrity-check');
我觉得我遗漏了一些东西,但无法从文档中确定它是什么。有任何想法吗?提前致谢。
编辑:我应该提到我正在使用的内容表是一个视图。据说它应该仍然可以工作,但我想知道它是否可能是一个错误。