对于某些工作,要求是这样的:我们希望保留表和数据库结构,同时一次性截断多表中的所有数据.
由于Truncate Table_name一次只能截断一个表.有没有一种方法可以截断多个表?帮助将不胜感激.
解决方法:
最简单的方法如下:
如果您有外键约束,请暂时将其设置为OFF.
SET FOREIGN_KEY_CHECKS = 0;
要再次将其设置为:
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..
现在抓取这些截断命令并执行所有命令.
您可以采用这种方法来避免编写存储过程以使其仅在一次性工作的情况下完成的麻烦