Последняя вставленная запись в транзакции - MySQL

Узнай цену своей работы

Формулировка задачи:

Добрый вечер! Стоит задача сделать транзакцию, которая добавляет в таблицу lots новую запись и несколько записей в таблицу lotitems, в которой поле lot_id равно lot_id из только что добавленной записи в таблице lots. Как узнать lot_id последней вставленной записи? Делаю так:
START TRANSACTION;
 
INSERT INTO lots (start_trading_date, prepayment, broker_id)
VALUES (NOW(), TRUE, 1);
 
INSERT INTO lotitems (lot_id, product_id, manufacture_date, COUNT)
VALUES ((SELECT LAST_INSERT_ID() FROM lots), 1, 20161127, 20);
 
COMMIT;
LAST_INSERT_ID() выдаёт ошибку. Через MAX(lot_id) работает, но он не подходит, т.к. если параллельно кто то другой еще добавит запись в таблицу, то будет браться его запись. Ещё одна проблема. Несмотря на то, что второй INSERT выдаёт ошибку, запись с первого INSERT всё равно добавляется в таблицу. Почему так происходит?

Решение задачи: «Последняя вставленная запись в транзакции»

textual
Листинг программы
AUTOCOMMIT

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы