繁体   English   中英

使用值从表中插入多行

[英]insert multiple rows from table to another with a value

我想从表中插入多行到另一个表,我希望从中获取行的表,我只想要twho列,但在distination表中我有三列,源表中的两个第一列将受到影响在distination表中的两列,以及distination表中的第三列将受到值的影响。

以下是我要从源表中选择的值:

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() ,然后我想将此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 ;

如果我理解正确,你已经在变量id拥有了你的价值。 因此只需改变

SELECT codeArt, qte FROM LigneBonEntrée

SELECT codeArt, qte, id FROM LigneBonEntrée
                     ^^

如果您的表LigneBonEntrée具有列id则更改您为其分配LAST_INSERT_ID()变量的名称或使用表的别名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM