我平时会用到以下几种准备测试数据的方法:向数据库插数据,通过接口写数据,自动化测试方法写数据。本文介绍数据库插数据的方法:数据存储过程。
数据存储过程是最直接的插入批量数据的方法,提前条件是清楚数据的表结构,知道表与表之间的关联,最多的时候,一次插入了8张具有关联关系的表数据。
首先需要创建存储过程:
CREATE PROCEDURE gen_data();
BEGIN
declare id varchar(255) defalut NULL;
declare id_ form XXX where XXX into id_; //定义id是从表中读取并赋值给变量id
insert into XXX (id_,name,xxx) values();
END
CALL gen_data()
上面是一个最基础的存储过程示例,当然,要创建大批量的数据,尤其是多张表插入的时候,设置变量,比如随机数、日期、循环都是必需的。
创建一个当前的日期的变量:
declare created_date timestamp;
set created_date = current timestamp();
创建一个循环语句:
while i <10 do
XXX
set i =i+1;
end while;
使用rand()函数创建随机数
生成6位的随机数:floor((rand()*10),6,0)
遇到的问题:
报错,运行的时候报错说[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call gen_data()' at line 15
原因是mysql版本的问题,我使用的是mysql8.0;mysql读取语句时遇到“;”就以为是结束了,所以需要接入delimiter用来定义结束符。在创建过程之前加入delimiter //,表示只有遇到//才表示此程序结束。