关于MySQL存储过程批量Insert插入数据

    a.jpg
    由于测试需要,要在表中添加部分数据,但由于我用户名字段设置了唯一索引导致手动插入变得异常累。
所以就想着有没有循环能够代替人工,查了一下资料,发现可以使用存储过程,便自己尝试了一下,代码如下(已附上注释_如有错误的地方还请大佬指出):
delimiter $$--声明存储过程结束符号
create procedure pre()--创建存储过程
begin--存储过程主体开始
declare i int;--声明变量
set i = 5;--初始值
while i<200 do--循环条件
insert into user(id,userName,password,email,sex,flag,status) values(null,'user'+i,'123','user'+i+'@admin.com','男',0,0);--执行语句
set i=i+1;--循环变量自增
end while;--结束循环
end--存储过程主体结束
$$--存储过程结束

call pre()--执行存储过程
执行完之后提示错误,错误代码如下:
Truncated incorrect DOUBLE value
提示字段值错误,检查了一下语句,唯一可疑的就是拼接变量i的那里,这时才想起来数据库自带的拼接函数CONCAT,于是将Insert语句那里修改了一下,代码如下:
insert into user(id,userName,password,email,sex,flag,status) values(null,CONCAT('user',i),'123',CONCAT('user',i,'@admin.com'),'男',0,0);--执行语句
再次执行,还有报错,提示代码如下:
1304 - PROCEDURE pre already exists
这次报错就很容易看出了,存储过程已存在,我们使用下面这行代码查看:
show procedure status;
会发现我们第一次创建的存储过程已经存在,不会自动覆盖,这时我们使用Drop命令删除该存储过程:
drop procedure if exists pre;
    删除之后,我们再次执行,就可以成功插入了(期间可能会卡几秒_因为数据正在插入),插入完成后我们使用SELECT语句查询一下,一切正常。
到此,关于MySQL存储过程批量Insert循环插入数据就已经解决了,如有疑问,还请在文章下方留言反馈哦。
作者:徐先森 文章名: 《关于MySQL存储过程批量Insert插入数据》
收录情况: 百度已收录
版权说明:若无特别注明,本文皆为 "徐博客”原创,转载请保留出处!

相关推荐

网友评论(已关闭)