SQLite - Один вкладыш / команда Drop Table, основанная на запросе sqlite_master? - PullRequest
0 голосов
/ 22 марта 2019

У меня есть база данных под названием HelpfulStats.sqlite3, в которой хранятся полезные статистические данные о днях работы программного обеспечения, которому оно принадлежит.Внутри HelpfulStats.sqlite3 у меня есть таблицы, соответствующие следующим правилам именования: stats_YYMMDD.Во время запуска программного обеспечения я проверяю размер файла HelpfulStats.sqlite3 и, если он превышает установленное пороговое значение, я вызываю VACUUM, проверяю, слишком ли он велик, и затем запускаю запроспри необходимости удалить самую старую таблицу stats_.

Я успешно нахожу самую старую таблицу с помощью SELECT [tbl_name] FROM sqlite_master WHERE type='table' AND [tbl_name] LIKE 'stats_%' ORDER BY [tbl_name] ASC LIMIT 1.Однако Я не могу понять, как передать результат SELECT в команду DROP TABLE.Возможно ли это? Я могу легко , просто сделав им два отдельных запроса, один для захвата результата SELECT, а другой для выполнения DROP с этим именем таблицы в качестве параметра, но мне интересноесли это возможно сделать просто в одном выполнении SQL.

Я пробовал что-то вроде DROP TABLE (SELECT [tbl_name] FROM sqlite_master WHERE type='table' AND [tbl_name] LIKE 'stats_%' ORDER BY [tbl_name] ASC LIMIT 1), но я получаю синтаксические ошибки в первой открывающей скобке.Возможно ли то, что я пытаюсь сделать?

1 Ответ

0 голосов
/ 22 марта 2019

Насколько я знаю, SQLite не поддерживает динамические запросы SQL, что вам и нужно делать, что вы пытаетесь. Одним из обходных путей может быть выбор вызова против sqlite_master на языке приложения (например, Java, Python, Node.js), а затем создание запроса на удаление с использованием кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...