比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

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

MySQL利用存储过程清除所有表中的所有记录http://www.bieryun.com/3535.html

在使用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利用存储过程清除所有表中的所有记录
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS