SQL-запрос вставки, который использует число из столбца auto_incremented в качестве значения вставки - PullRequest
0 голосов
/ 13 июня 2019

По сути, у меня есть следующий запрос SQL, который вставляет три значения в три указанных столбца.

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

В таблице также есть столбец идентификатора с автоинкрементом, который создает новый идентификатор при каждом выполнении вышеуказанного запроса.

Как я могу вставить значение в field4, где значение жестко закодировано, чтобы быть "NUM: (The auto-incremented ID )"

1 Ответ

0 голосов
/ 13 июня 2019

Если вы делаете это в одной транзакции, вероятно, самый простой способ - обновить после вставки.В MySQL это выглядит так:

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

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

Конечно, это может не сработать, если есть параллельные транзакции.Для этого вы хотите захватить наиболее вставленный идентификатор:

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;
...