入库模块存储过程--实现一条记录拆分插入多列,并同时插入两表是引用上一个表自增ID,以mysql实例

2023年9月4日 55点热度 0人点赞 0条评论

当有类似下列应用场景:

将甲同学的姓名插入useinfo表,另甲同学有多张图片,需插入pic表,并且要求两表相关联,图片是一张图片插入一行。

那这就要求,pic表可以获得useinfo表中甲同学的自增ID。这种复杂的插入过程,则需要存储过程了。

以上述情况,可使用如下存储过程

BEGIN
DECLARE 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工具创建存储过程的界面,传入参数,需要手动添加。存储过程建立好后。在火车采集器的入库模块中可以直接调用:

其中需要注意,插入的图片标签中的值是以 逗号间隔:

执行结果:

若是有类似的情况可以修改下存储过程,一些关于存储过程的详细使用方法,可以百度教程自行学习哦。这里仅提供使用示例。

365crawadmin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论