SQLite 检查 Table 是否为 FTS4

SQLite Check if Table is FTS4

我正在开发一个 Android 应用程序,它使用带有 FTS4 表的 SQLite 数据库。

在应用程序中,有一个选项可以从外部存储器导入数据库。需要检查此数据库以确认它具有所有正确的表和列。我已经有了执行此操作的代码,但是我不知道如何检查表是 "normal" 还是 FTS4。这将导致以后使用 MATCH 进行查询时出现问题。

我能想到的检查表是否为 FTS4 的唯一方法是使用 MATCH 进行随机查询,如果出现错误,那是因为它们不是。

有没有更好的方法来像只用一个命令那样做?

仅当 table 至少有一行时,在普通 table 上使用 MATCH 才会产生错误消息。

FTS table 有一个与 table 同名的虚拟列。所以你可以尝试像 SELECT MyTable FROM MyTable.

这样的查询

您可以检查 shadow tablesMyTable_contentMyTable_segdir 等)是否存在。

您可以查看系统中的 CREATE TABLE 语句 table: SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'MyTable';