Дубликат AUTO_INCREMENT Id при вставке в другой столбец? - PullRequest
0 голосов
/ 08 января 2019

Скажите, у меня есть эта структура таблицы:

CREATE TABLE bananas (
    id    INT AUTO_INCREMENT PRIMARY KEY,
    name  CHAR(127),
    order INT
);

И я хочу, чтобы поле начального порядка строк совпадало с последовательностью вставки, поэтому order == id

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

INSERT INTO bananas (name, order) VALUES ($name, ???);

1 Ответ

0 голосов
/ 08 января 2019

Сразу после запуска INSERT вы можете использовать функцию LAST_INSERT_ID, чтобы восстановить идентификатор последней успешно вставленной записи и выполнить запрос UPDATE:

INSERT INTO bananas (name, ord) values ('foo', 100);
UPDATE bananas SET ord = LAST_INSERT_ID() WHERE id = LAST_INSERT_ID();

Эта скрипка БД демонстрирует, как это работает.

PS: имя столбца order конфликтует с соответствующим ключевым словом SQL, я переименовал этот столбец ord в коде.

...