Как получить имена виртуальных таблиц?

Пример схемы:

CREATE VIRTUAL TABLE posts USING FTS5(title, body);

Выберите имена таблиц:

SELECT name FROM sqlite_master WHERE type='table';

Результат:

сообщений
posts_data
posts_idx
posts_content
posts_docsize
posts_config

Как получить результат только для виртуальных таблиц, без *_data, *_idx, *_content, *_docsize а также *_config?

1 ответ

Решение

Модули FTS используют теневые таблицы для хранения фактических данных и их индексов.

Но это "настоящие" таблицы, так что вы можете просто использовать фильтр, чтобы получить только sqlite_master записи для виртуальных таблиц:

SELECT name
FROM sqlite_master
WHERE type = 'table'
  AND sql LIKE 'CREATE VIRTUAL TABLE%';
Другие вопросы по тегам