1
我有一個MySQL數據庫,其中包含許多表,其中一些表由軟件動態創建。動態表具有一致的命名方案:在MySQL中刪除動態管理表
dynamic_1
dynamic_2
...
但是,我不一定知道這些表中有多少。
我希望能夠刪除所有這些動態表而不刪除整個數據庫。我希望能夠純粹在SQL中完成此操作。 (存儲過程可以。)這是甚至可能的嗎?
快速附錄。
Haim和Alexandre的解決方案效果很好,但我們都錯過了一個特例。如果沒有 - 動態表呢?在這種情況下,@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;
你或許應該加上'和a.table_schema = DATABASE()'只搜索當前數據庫 – 2010-11-18 06:45:51
哇,這看起來不錯。 (是的,a.table_schema很有用。)是否可以將結果集分配給一個變量並在同一個腳本中執行它? – njudge 2010-11-18 06:49:35
我想你只能在存儲過程中使用循環 – 2010-11-18 06:51:06