Последняя вставленная запись в транзакции - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д