删除库里所有表的数据

zxbandzby
1
2025-09-02

-- 安全删除所有表数据(保留结构)的存储过程

DELIMITER $$

CREATE PROCEDURE truncate_all_tables()

BEGIN

DECLARE done BOOLEAN DEFAULT FALSE;

DECLARE tableName VARCHAR(255);

DECLARE tableCursor CURSOR FOR

SELECT TABLE_NAME

FROM information_schema.tables

WHERE table_schema = DATABASE()

AND table_type = 'BASE TABLE';

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

SET FOREIGN_KEY_CHECKS = 0;

OPEN tableCursor;

truncate_loop: LOOP

FETCH tableCursor INTO tableName;

IF done THEN

LEAVE truncate_loop;

END IF;

-- 动态执行TRUNCATE

SET @truncateSql = CONCAT('TRUNCATE TABLE ', tableName, '');

PREPARE stmt FROM @truncateSql;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

END LOOP;

CLOSE tableCursor;

SET FOREIGN_KEY_CHECKS = 1;

END

$$

DELIMITER ;

-- 执行存储过程

CALL truncate_all_tables();

-- 清理存储过程(可选)

DROP PROCEDURE IF EXISTS truncate_all_tables;

动物装饰