Последняя вставленная запись в транзакции - MySQL
Формулировка задачи:
Добрый вечер!
Стоит задача сделать транзакцию, которая добавляет в таблицу lots новую запись и несколько записей в таблицу lotitems, в которой поле lot_id равно lot_id из только что добавленной записи в таблице lots. Как узнать lot_id последней вставленной записи?
Делаю так:
LAST_INSERT_ID() выдаёт ошибку.
Через MAX(lot_id) работает, но он не подходит, т.к. если параллельно кто то другой еще добавит запись в таблицу, то будет браться его запись.
Ещё одна проблема. Несмотря на то, что второй INSERT выдаёт ошибку, запись с первого INSERT всё равно добавляется в таблицу. Почему так происходит?
Листинг программы
- 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;
Решение задачи: «Последняя вставленная запись в транзакции»
textual
Листинг программы
- AUTOCOMMIT
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д