MySQL利用存储过程清除所有表中的所有记录

MySQL利用存储过程清除所有表中的所有记录

MySQL利用存储过程清除所有表中的所有记录

在使用MySQL过程中,难免会出现一些测试数据,然而这些测试数据在真正部署运行的时候,通常要被清楚掉,并且自增长的字段要回复初始值。如何高效快速的实现以上功能,可以使用存储过程实现这一个功能。

主要使用:TRUNCATE TABLE。不仅可以清楚数据,而且可以使自增长字段归为1:

BEGIN
    DECLARE strClear VARCHAR(256);
    DECLARE done INT DEFAULT 0;
    #定义游标
    DECLARE curOne CURSOR FOR SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') as ClearTable FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DBName;
    #绑定控制变量到游标,游标循环结束自动转为True
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    #打开游标
    OPEN curOne;

    FETCH curOne INTO strClear;
    REPEAT
        FETCH curOne INTO strClear;
        #SELECT strClear;

        #动态执行SQL语句
        SET @mysql = strClear;
        PREPARE stmt from @mysql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

        UNTIL done = 1 END REPEAT;

    #关闭游标
    CLOSE curOne;
END

执行存储过程之前:
MySQL利用存储过程清除所有表中的所有记录

执行存储过程之后:

MySQL利用存储过程清除所有表中的所有记录

原文地址http://www.bieryun.com/3535.html

上一篇:英国上议院通过调查权力法案 ISP无需法院命令即可存储用户记录


下一篇:Entity Freamwork 6连接PostgreSql数据库