多個關聯表的批量插入實踐
阿新 • • 發佈:2019-01-10
之前接觸到的都是單表的批量插入,這沒什麼問題,但現在是多個表的一個批量插入。
例如表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:
[email protected]+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;