之前接触到的都是单表的批量插入,这没什么问题,但现在是多个表的一个批量插入。
例如表A、表B,其中表B关联表A,现在的要求是插入数据到表A、表B中,因为存在外键的关联,所以必须表A先有主键,才能插入外键到表B,这就存在一个寻找刚插入的表A的主键问题,你们觉得有什么方法可以解决呢?
这里的做法是:
在表A中设置一个字段:rownum,记录当前插入数据的数目,先插入表A,因为当前rownum可以知道,然后根据rownum去表A中查找主键ID,再插入表B中
sql示例:
CREATE PROCEDURE batch_insert()
BEGIN
DECLARE s INT DEFAULT 0;
DECLARE COURSOR cursor_name FOR
SELECT @rownum:=@rownum+1 AS rownum, * FROM 要查询数据插入到表A中的数据表;
DECLARE CONTINUE HANDLER SQLSTATE '02000' SET s = 1;
OPEN cursor_name;
FETCH cursor_name INTO col_rownum, ...;
WHILE s <> 1 DO
INSERT INTO 表A(rownum,...)
VALUE(col_row_num,....)
SELECT id INTO col_a_id FROM A WHERE rownum=col_rownum;
INSERT INTO B(a_id,...)
VALUE(col_a_id,....)
FETCH cursor_name INTO col_rownum, ...;
END WHILE;
END;