mysql 存储过程mock数据

前文

本文提供mysql存储过程mock数据的方式,主要实现循环n次执行sql的mock数据操作

知识点

# 删除存储过程
drop procedure if exists mock_r_id; # 如果存储过程mock_r_id存在则删除
# 创建存储过程
CREATE PROCEDURE mock_r_id ( r_id INT, n INT ) 
BEGIN
DECLARE i INT DEFAULT 0;  # 定义变量i 默认 0
# ……语句
END
# 调用存储过程
call mock_r_id(5027,100000);
# 定义语句存储过程将以$$ 替代; 作为sql运行分割符
DELIMITER $$ 

END $$ # 此处相当于结束
# 重复执行
DECLARE
	i INT DEFAULT 0;
REPEAT
SET i = i + 1;
# ……语句
UNTIL i = n  # 知道i = n 跳出循环
END REPEAT;
# 设置事务不自动提交
SET autocommit = 0;
COMMIT; # 手动提交事务
# 设置事务自动提交
SET autocommit = 1;
# 字符串拼接函数
concat(r_id,"redeem",i)

存储过程

功能为循环创建n条数据

-- 清除同名存储过程
drop procedure if exists mock_r_id;

DELIMITER $$

-- 创建存储过程
CREATE PROCEDURE mock_r_id ( r_id INT, n INT ) 
BEGIN
	DECLARE i INT DEFAULT 0;
	SET autocommit = 0;
	-- 循环mock数据
		REPEAT
			SET i = i + 1;
			INSERT INTO `basic_redeem_code_detail` ( `r_id`,`redeem_code`, `status` )
			VALUES ( r_id, concat(r_id,"redeem",i), 0 );
			UNTIL i = n 
		END REPEAT;
	-- 提交mock数据
	COMMIT;
	SET autocommit = 1;
END 
$$

-- 调用mock函数
call mock_r_id(5027,100000);
call mock_r_id(5028,100000);
call mock_r_id(5029,100000);
call mock_r_id(5030,100000);
call mock_r_id(5031,100000);
call mock_r_id(5032,100000);
call mock_r_id(5033,100000);
call mock_r_id(5034,100000);
call mock_r_id(5035,100000);
call mock_r_id(5036,100000);
call mock_r_id(5056,100000);
call mock_r_id(5057,100000);
call mock_r_id(5058,100000);

模版

-- 清除同名存储过程
drop procedure if exists funcxxxx;

DELIMITER $$

-- 创建存储过程
CREATE PROCEDURE funcxxxx (n INT ) 
BEGIN
	DECLARE i INT DEFAULT 0;
	SET autocommit = 0;
	-- 循环mock数据
		REPEAT
			SET i = i + 1;
			# repeat sql 
			UNTIL i = n 
		END REPEAT;
	-- 提交mock数据
	COMMIT;
	SET autocommit = 1;
END 
$$

-- 调用mock函数
call funcxxxx(100000); # 重复调用10万次sql

猜你喜欢

转载自blog.csdn.net/qq_22211217/article/details/120661666