对于某些工作,我们的需求是希望保留表和数据库结构,同时将多个表中的所有数据一次性截断。 由于 Truncate Table_name 一次只截断一个表。有没有办法截断多个表?帮助将不胜感激。
最佳答案
最简单的方法可能如下:
如果您有外键约束,则暂时将其设置为 OFF
。
SET FOREIGN_KEY_CHECKS=0;
再次将其设置为ON
:
SET FOREIGN_KEY_CHECKS=1;
截断特定数据库下的所有表
SELECT
CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') AS truncateCommand
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'YOUR_DATABASE_NAME_HERE';
截断所有数据库中的所有表
SELECT
CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') AS truncateCommand
FROM information_schema.TABLES;
你会得到这样的输出:
TRUNCATE TABLE your_table_1;
TRUNCATE TABLE your_table_2;
TRUNCATE TABLE your_table_3;
TRUNCATE TABLE your_table_4;
TRUNCATE TABLE your_table_5;
TRUNCATE TABLE your_table_6;
TRUNCATE TABLE your_table_7;
TRUNCATE TABLE your_table_8;
.
.
etc..
现在获取这些截断命令并全部执行。
当且仅当它是一次性工作时,您可以采用这种方法来避免编写存储过程来完成它的麻烦
关于mysql - 截断数据库中所有表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980894/