mysql transaction – mix insert & select для достижения last_insert_id?

Я выполняю транзакцию (используя PDO), однако мне нужно захватить идентификатор вставки первого элемента в транзакции, например:

BEGIN INSERT INTO user (field1,field2) values (value1,value2) INSERT INTO user_option (user_id,field2) values (LAST_INSERT_ID(),value2); COMMIT; 

Затем сделайте материал pdo:

 [...] $pdo->execute(); $foo = $pdo->lastInsertId(); // This needs to be the id from the FIRST insert 

Есть ли способ получить последний идентификатор вставки из первого элемента транзакции? Возможно, используя что-то вроде следующего:

 BEGIN INSERT INTO user (field1,field2) values (value1,value2) SELECT id AS user_id FROM user WHERE id=LAST_INSERT_ID() INSERT INTO user_option (user_id,field2) values (LAST_INSERT_ID(),value2); COMMIT; $pdo->execute(); $fooArray = $pdo->fetchAll(); $lastId = $fooArray[0]['user_id']; 

Я полностью выхожу на обед с ^? Есть лучший способ сделать это?

ИЗМЕНИТЬ 1

Основываясь на предположении, я обновил запрос на использование переменных … однако, я не знаю, как получить значения переменных с помощью PDO. Использование $ stmt-> fetchAll () просто возвращает пустой массив;

 BEGIN DECLARE User_ID int DECLARE Option_ID int INSERT INTO user (field1,field2) values (value1,value2); set User_ID = select LAST_INSERT_ID(); INSERT INTO user_option (user_id,field2) values (LAST_INSERT_ID(),value2); set Option_ID = select LAST_INSERT_ID(); select User_ID, Option_ID COMMIT; 

Solutions Collecting From Web of "mysql transaction – mix insert & select для достижения last_insert_id?"