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