mysql重置所有表_Mysql脚本之清空当前数据库下的所有表中数据,并重置自增id

说明:实际Truncate表之后,自增id就会自动从1开始,这里的存储过程是为了程序的完整,并且更加灵活的设置自增id

下面是图片有颜色,看着结构清晰

0f69d369e9cae5d67c7ee250bd4c30c1.png

下面是存储过程源码,在mysql中将以下代码运行一次后,就会创建存储过程,以后每次执行此存储过程即可

CREATE  PROCEDURE `reset_autoIncrement`()

begin

declare v_table_name varchar(100); -- @城市之雾 自定义变量

declare done int default false; -- @城市之雾 自定义控制游标循环变量,默认false

declare sql_for_select varchar(500);

declare my_cursor cursor for

select  table_name

from information_schema.tables

where table_schema=database();

declare continue handler for not found set done = true; -- @城市之雾 绑定控制变量到游标,游标循环结束自动转true

open my_cursor; --@城市之雾  打开游标

myloop: loop -- @城市之雾 开始循环体,

fetch my_cursor into  v_table_name; -- @城市之雾 将游标当前读取行的数据顺序赋予自定义变量

if done then -- @城市之雾 判断是否继续循环  注意:不要放在后面,直接就在fetch后面判断

leave myloop; -- @城市之雾 结束循环

end if;

set sql_for_select = concat("truncate table ", v_table_name);

#select sql_for_select;

set @sql =  sql_for_select;

prepare stmt from @sql;         -- @城市之雾 预处理动态sql语句

execute stmt ;                        -- @城市之雾 执行sql语句

#修改自增id

set sql_for_select = concat( "alter table ", v_table_name," auto_increment = 1");

set @sql =  sql_for_select;

prepare stmt from @sql;         -- @城市之雾 预处理动态sql语句

execute stmt ;                        --@城市之雾  执行sql语句

end loop myloop; -- @城市之雾 结束自定义循环体

deallocate prepare stmt;      -- @城市之雾 释放prepare

close my_cursor; -- @城市之雾  关闭游标

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值