Здравствуйте.
Есть таблица backet. В ней поля id, description и всякая фигня.
Есть вторая таблица backet_state, в ней поля id_backet, id_user, id_status
Есть третья таблица orders, в ней id, timestamp, phone, comment
Четвертая таблица order_state, где есть id_backet, id_order
Хочу сделать следующее. Хранимой процедурой в таблице backet_state для заданного id_user все значения id_status поменять, допустим, с 1 на 2, В таблицу orders добавить новую запись. В таблицу order_state добавить записи с id_backet, над которыми были произведены операции по смене статуса, со свежедобавленным id от операции создания новой записи в orders.
Как я себе это представляю
DELIMITER $$
CREATE
PROCEDURE `toOrder`(IN var_user_id INT, IN var_phonenumber VARCHAR(255), IN var_comment TEXT)
BEGIN
UPDATE backet_state SET id_status=2 WHERE id_user= var_user_id AND id_status=1;
INSERT INTO orders (phone, `comment`) VALUES (var_phonenumber, var_comment);
INSERT INTO order_state (id_order, id_backet) SELECT LAST_INSERT_ID(), id_backet FROM backet_state WHERE id_status=2 AND id_user= var_user_id;
END$$
Но. Будет ли функция LAST_INSERT_ID() будет возвращать мне каждый раз тот id, который был получен в ходе первого инсерта? Или нет?
Если нет, то надо после первого инсерта куда то сохранить результат LAST_INSERT_ID(), а во втором инсерте это значение получить и уже его вставить в подзапрос SELECT. Как это лучше сделать то?