我想从表中插入多行到另一个表,我希望从中获取行的表,我只想要twho列,但在distination表中我有三列,源表中的两个第一列将是影响到分心表中的两列,并且分心表中的第三个clumn将受到值的影响。
以下是我要从源表中选择的值:
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_INSERT_ID()
我该怎么做?
我真正想要做的是,当触发器被触发时,我在表上有一个触发器,我想插入另一个调用Inventaire当前日期的表,当然插入的主键将是值为LAST_INSERT_ID()
,然后我想将此LAST_INSERT_ID()
用于以下查询:
INSERT INTO LigneInterventaire(codeArt, qteInv, numInv)
SELECT codeArt, qte FROM LigneBonEntrée
WHERE numBon = NEW.num;
LAST_INSERT_ID()
的值将受numInv
列的影响。
并且是我正在使用的触发器:
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 ;
答案 0 :(得分:2)
如果我理解正确,您已经在变量id
中拥有了自己的价值。因此只需改变
SELECT codeArt, qte FROM LigneBonEntrée
到
SELECT codeArt, qte, id FROM LigneBonEntrée
^^
如果您的表格LigneBonEntrée
有一列id
,请更改您为其指定LAST_INSERT_ID()
的变量的名称,或使用表格的别名。