我正在开发一个使用带有FTS4表格的SQLite数据库的Android应用程序。
在应用程序中,可以选择从外部存储器导入数据库。需要检查此数据库以确认它具有所有正确的表和列。我已经有了这样做的代码但是我不知道如何检查表是“正常”还是FTS4。这将导致稍后查询MATCH
的问题。
我能想到检查这些表是否为FTS4的唯一方法是使用MATCH
进行随机查询,如果它出错,那是因为它们不是。
有没有更好的方法来执行此操作,只需要一个命令?
答案 0 :(得分:1)
仅当表中至少有一行时,在普通表上使用MATCH才会产生错误消息。
FTS表有一个与表名同名的虚拟列。因此,您可以尝试查询SELECT MyTable FROM MyTable
。
您可以检查shadow tables(MyTable_content
,MyTable_segdir
等)是否存在。
您可以检查系统表中的CREATE TABLE语句:SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'MyTable';