Mysql 使用值将多行从表插入到另一个表
我想从表中插入多行到另一个表中,我想从中获取行,我只想要两列,但在区分表中我有三列,源表中的前两列将影响到区分表中的两列,而distination表中的第三个束将受某个值的影响 以下是我要从源表中选择的值:Mysql 使用值将多行从表插入到另一个表,mysql,Mysql,我想从表中插入多行到另一个表中,我想从中获取行,我只想要两列,但在区分表中我有三列,源表中的前两列将影响到区分表中的两列,而distination表中的第三个束将受某个值的影响 以下是我要从源表中选择的值: SELECT codeArt, qte FROM LigneBonEntrée WHERE numBon = NEW.num 在distination文件夹中,我插入了以下内容: INSERT INTO LigneInterventaire(codeArt, qte
SELECT codeArt, qte FROM LigneBonEntrée
WHERE numBon = NEW.num
在distination文件夹中,我插入了以下内容:
INSERT INTO LigneInterventaire(codeArt, qteInv, numInv)
VALUES (NEW.codeArt, NEW.qte, LAST_INSERT_ID());
如果我试过这个:
INSERT INTO LigneInterventaire(codeArt, qteInv, numInv)
SELECT codeArt, qte FROM LigneBonEntrée
WHERE numBon = NEW.num
我需要插入值LAST\u insert\u ID()
我该怎么做
编辑:
我真正想做的是,当这个触发器被触发时,我在一个表上有一个触发器,我想将当前日期插入另一个名为Inventaire的表,当然插入的主键将是LAST\u insert\u ID()
,然后我想使用这个LAST\u insert\u ID()
进行以下查询:
INSERT INTO LigneInterventaire(codeArt, qteInv, numInv)
SELECT codeArt, qte FROM LigneBonEntrée
WHERE numBon = NEW.num;
LAST\u INSERT\u ID()
的值将影响列numiv
这就是我使用的触发器:
DELIMITER //
CREATE TRIGGER `accepterLivraion` BEFORE UPDATE ON `BonEntrée`
FOR EACH ROW
BEGIN
DECLARE id INTEGER;
IF NEW.etat = 'Accepté' THEN
IF verifierLivraison(OLD.num) = FALSE THEN
SIGNAL sqlstate '45001' set message_text = "La livraison n'a pas respectée les termes de la commande de sortie.";
ELSE
INSERT INTO Inventaire(`date`) VALUES (DATE(NOW());
SET id = LAST_INSERT_ID();
INSERT INTO LigneInterventaire(codeArt, qteInv, numInv)
SELECT codeArt, qte FROM LigneBonEntrée
WHERE numBon = NEW.num;
END IF;
END IF;
END//
DELIMITER ;
如果我理解正确,您已经在变量
id
中有了值。因此,只要改变
SELECT codeArt, qte FROM LigneBonEntrée
到
如果您的表
lignebonterée
有一列id
,请更改您分配给它的变量的名称LAST\u INSERT\u id()
,或者为表使用别名。您不能按要求执行。我甚至不确定我能否准确地说出你在问什么,或者你为什么要这么做。您可以将LAST\u INSERT\u ID()
作为另一个字段添加到SELECT
中,但它(我希望)对导入的所有行都有1个值,等于连接上前面的INSERT
的ID。这在SQLFIDLE示例中得到了验证:@Simonatmso.net如果我之前将LAST_INSERT_ID()的值影响到某个变量,然后使用此变量而不是LAST_INSERT_ID(),我不知道,因为我不知道LAST_INSERT_ID()将返回什么ID。如果您希望它是该插入的上一次插入的ID。。。选择
,则这是不可能的。你到底想在这里实现什么?请提供更多细节/样本数据集来说明您的观点。这感觉就像你在试图重新创造wheel@Simonatmso.net请查看我所做的修改,检查下面@peterm的答案,因为它看起来符合您的要求。
SELECT codeArt, qte, id FROM LigneBonEntrée
^^