SQL插入查询,使用auto_incremented列中的数字作为插入值

时间:2019-06-13 17:47:17

标签: mysql sql sql-insert

基本上,我有以下SQL查询,该查询将三个值插入指定的三列中。

"INSERT INTO Equipment (field1, field2, field3)
VALUES ('TestInsertF1', 'TestInsertF2', 'TestInsertF3')";

该表还具有一个自动递增ID列,该列在每次执行上述查询时都会创建一个新ID。

如何将值插入到field4中,其中该值被硬编码为"NUM: (The auto-incremented ID )"

1 个答案:

答案 0 :(得分:0)

我正在一次交易中执行此操作,可能最简单的方法是在插入后更新 。在MySQL中,这看起来像:

INSERT INTO Equipment (field1, field2, field3)
    VALUES ('TestInsertF1', 'TestInsertF2', 'TestInsertF3');

UPDATE Equipment
    SET field4 = CONCAT('NUM: ', <id>)
    ORDER BY <id> DESC
    LIMIT 1;

当然,如果存在并发事务,这可能不起作用。为此,您需要捕获插入次数最多的ID:

INSERT INTO Equipment (field1, field2, field3)
    VALUES ('TestInsertF1', 'TestInsertF2', 'TestInsertF3');

SET @id = LAST_INSERT_ID();

UPDATE Equipment
    SET field4 = CONCAT('NUM: ', <id>)
    WHERE <id> = @id;