入库模块存储过程--实现一条记录拆分插入多列,并同时插入两表是引用上一个表自增ID,以mysql实例
当有类似下列应用场景:
将甲同学的姓名插入useinfo表,另甲同学有多张图片,需插入pic表,并且要求两表相关联,图片是一张图片插入一行。
那这就要求,pic表可以获得useinfo表中甲同学的自增ID。这种复杂的插入过程,则需要存储过程了。
以上述情况,可使用如下存储过程
BEGINDECLARE po INT DEFAULT 0;
DECLARE oid INT DEFAULT 0;
DECLARE rid VARCHAR(200) DEFAULT "";
DECLARE rid_tmp VARCHAR(200) DEFAULT "";
insert into `useinfo`(usename) values(usename);
select max(id) from `useinfo` into oid;
SET po= LOCATE(",",pics);
SET rid=LEFT(pics,po-1);
SET rid_tmp=SUBSTR(pics,po+1);
WHILE po >0 DO
INSERT INTO `pic`(useid,pic) values(oid,rid);
SET po =LOCATE(",",rid_tmp);
SET rid=LEFT(rid_tmp,po-1);
SET rid_tmp=SUBSTR(rid_tmp,po+1);
END WHILE ;
INSERT INTO `pic`(useid,pic) values(oid,rid_tmp);
END
首先在数据库手动创建存储过程,这个heidisql工具创建存储过程的界面,传入参数,需要手动添加。存储过程建立好后。在火车采集器的入库模块中可以直接调用:
其中需要注意,插入的图片标签中的值是以 逗号间隔:
执行结果:
若是有类似的情况可以修改下存储过程,一些关于存储过程的详细使用方法,可以百度教程自行学习哦。这里仅提供使用示例。