У меня есть база данных MySQL, которая содержит много таблиц, некоторые из которых динамически создаются программным обеспечением.Динамические таблицы имеют согласованную схему именования:
dynamic_1
dynamic_2
...
Однако я не обязательно знаю, сколько таких таблиц существует.
Я хотел бы иметь возможность удалить всеиз этих динамических таблиц без удаления всей базы данных.Я хотел бы быть в состоянии сделать это чисто в SQL.(Хранимые процедуры в порядке.) Возможно ли это?
Быстрое дополнение.
Решение от Хаима и Александра прекрасно работает, но есть один особый случай, который мы все пропустили.Что делать, если есть динамические таблицы?В этом случае @v
будет NULL, и мы получим ошибку при попытке выполнить.Я добавил вторую переменную для обработки этого случая:
SET @v = (SELECT CONCAT('drop table ', GROUP_CONCAT(a.table_name)) FROM information_schema.tables a where a.table_schema = DATABASE() AND a.table_name like 'dynamic_%');
SET @y = (SELECT IF (@V IS NOT NULL, @V, 'select 1'));
PREPARE s FROM @y;
EXECUTE s;