假设我们有以下2张表: student , detail_info 。(MySQL版本)

其他detail_info的外键是name (也就是说detail_tail 中name的值要在student中有)

6c2e0002c93c712b148d

6c2e0002c94a06037f33

现在准备需要往这两张表中插入数据供测试时使用,

方法一,手动插入

必须选插入一条记录到student中,然后再插入一条到detail_info,且name要在student中有。

方法二,利用MySQL的存储过程

2.1 创建存储过程(一次插入一条数据)

6c3300005e5546f7c421

代码块

create procedure pr_add

(

v_id int, -- 打算插入的id

v_name varchar(20) –打算插入的name

)

begin

INSERT INTO `student` VALUES (v_id, v_name, 'male', '20', '2011-08-16 22:05:45' );

INSERT INTO `detail_info` VALUES (v_id, v_name, '2011-08-16', '13881954050', 'xinjiang');

end;

2.2 调用存储过程

6c2e0002c960f61abcbe

查询相应的表检查

6c3100015940fcdcd8b8

6c3000024f112b63729c

1.3深入一个,创建一个一次能插入多条数据的存储过程

6c2d0002f77fd3a3f8e9

代码块

create procedure proc_add

(

number int -- 打算新插入多少条数据

)

begin

declare v_name varchar(20);

declare v_i int;

set v_i=0;

select max(id) into v_i from student; -- 获得当前表中最大id,并存储进变量v_i

set number=v_i+number; -- 最大id

set v_i=v_i+1; -- 插入的id从当前id+1开始

while v_i<=number do -- 插入的id值从id+1 ~ number

set v_name=concat('bill' , v_i ); -- 拼接name,因为name不能相同

INSERT INTO `student` VALUES (v_i, v_name, 'male', '20', '2011-07-16' );

INSERT INTO `detail_info` VALUES (v_i, v_name, '2011-08-16 22:05:45', '13881954050', 'xinjiang');

set v_i=v_i + 1;

end while;

end;

调用

6c3300005ed142c5bca5

查看结果

6c2f0002b57b87104c1d

方法三,利用工具DataFactory

6c2e0002c9f42f02b9a3

6c2e0002ca04d1491a08

6c3000024f941b974a6b

6c3000024f9b0eb72d81

数据验证

6c2c0003bb673efe0f27

小结

利用存储过程添加数据较方便,但需要自己编写sql语句块。有关mysql的存储过程只在mysql5以后才能使用,详细的介绍请参考网络。

DataFactory 在创建大数据量是更有优势,但设置起来比较麻烦,需要对每个字段进行设置。有关DataFactory的详细操作,如有兴趣,可另外讨论。这里只是介绍一下。