Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Могу ли я получить lastinsertid при выполнении транзакции?

Quatrix Знаток (457), на голосовании 1 год назад
Таблица table1 поля id,name,....еще поля
Таблица table2 поля id,name,....еще поля,table1_id
-
Транзакция:
begin;
INSERT INTO table1 SET name='Ivan';
-- надо получить lastinsertid, как это сделать?
UPDATE table2 SET table1_id=[lastinsertid] WHERE name='Ivan';
commit;
Дополнен 2 года назад
$name = 'ivan';
$pdo->beginTransaction();
$pdo->exec('INSERT INTO test1 SET name="'.$name.'";');
$pdo->exec('UPDATE test2 SET test1_id=(SELECT LAST_INSERT_ID()) WHERE name="'.$name.'";');
$pdo->commit();
Голосование за лучший ответ
/bin/laden Искусственный Интеллект (113039) 2 года назад
scope_identity() / mssql
last_insert_id() / mysql
я тупо погуглил ))
QuatrixЗнаток (457) 2 года назад
Погуглил
QuatrixЗнаток (457) 2 года назад
и нашел
$name = 'ivan';
$pdo->beginTransaction();
$pdo->exec('INSERT INTO test1 SET name="'.$name.'";');
$pdo->exec('UPDATE test2 SET test1_id=(SELECT LAST_INSERT_ID()) WHERE name="'.$name.'";');
$pdo->commit();
Василий Полубнев Просветленный (23522) 2 года назад
Если пострес, то можно написать так:
INSERT INTO table(...)
VALUES (...)
RETURNING table.id INTO smth;
Возможно, что это уже и в стандарте SQL есть - проверьте сами.
Похожие вопросы