MySQL 填充另一个 table - 使用过程或其他方式

MySQL populate another table - Using Procedure or another way

我的数据库中有两个 table。

一个名为 'a' 的 table 具有以下结构:

ID  COD     F   L   Q S
1   MI001   1   1   1 E
2   MI002   1   1   1 E
3   MI003   2   2   2 E
4   MI004   1   2   3 E
5   MI005   1   1   1 E

一个叫'b'的table我有这个结构

ID | A_ID | A_ID_NEW

我想要的是,假设我的应用程序上有一个按钮或功能,我从 table 'a' 捕获 ID 例如,我捕获 ID“1”和“2” .

所以我会在 table a 上插入一个从您的 id 获取数据的新寄存器,因此 table 'a' 必须如下所示:


ID  COD     F   L   Q S
1   MI001   1   1   1 E
2   MI002   1   2   1 E
3   MI003   2   2   2 E
4   MI004   1   2   3 E
5   MI005   1   1   1 E
6   MI001   1   1   1 T
7   MI002   1   2   1 T

并插入名为 'b' 的 table,如下所示:

ID | A_ID | A_ID_NEW
1  | 1    | 6
2  | 2    | 7

可能吗?

CREATE PROCEDURE populate_rows (ids TEXT)
BEGIN
DECLARE id INT;
DECLARE cod CHAR(5);
DECLARE f TINYINT;
DECLARE l TINYINT;
DECLARE q TINYINT;
DECLARE s CHAR(1);
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT * FROM a WHERE FIND_IN_SET(a.id, ids);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
cycle: REPEAT
    FETCH cur INTO id, cod, f, l, q, s;
    IF done THEN
        LEAVE cycle;
    END IF;
    INSERT INTO a VALUES (NULL, cod, f, l, q, 'T');
    INSERT INTO b SELECT NULL, id, MAX(a.id) FROM a;
UNTIL done END REPEAT cycle;
END

fiddle

PS。该过程未考虑并行过程的任何干扰或过程中可能发生的任何其他问题。

PPS。根据您的实际 table 结构调整局部变量的数据类型。