Administrator
Published on 2025-04-30 / 1 Visits
0
0

MySql快速截断所有表

DELIMITER $$
CREATE PROCEDURE TruncateAllTables()
BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE tableName CHAR(64);
  DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = '数据库名';
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

  OPEN cur;

  read_loop: LOOP
    FETCH cur INTO tableName;
    IF done THEN
      LEAVE read_loop;
    END IF;
    SET @s = CONCAT('TRUNCATE TABLE ', tableName);
    PREPARE stmt FROM @s;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
  END LOOP;

  CLOSE cur;
END$$
DELIMITER ;


//执行sql
CALL TruncateAllTables();


Comment