В базе данных автоматически создается идентификатор для этой строки. Если INSERT выполняется между выполнением в этом коде и SELECT, я вернусь неверный идентификатор. Есть ли лучшая альтернатива для получения идентификатора и гарантии его будет из строки, которую я вставил. Я понимаю, что эти два заявления будут происходить очень близко друг к другу, но я все равно хотел бы знать, есть ли лучший способ сделать это.Получить идентификатор последней вставленной строки mysql
my $sthH = $dbh->prepare("INSERT INTO hardware (cpu_type, cpu_count, memory) VALUES (?,?,?)");
$resultH = $sthH->execute($cpu_type, $cpu_count, $memory);
$hardware_id = $dbh->selectrow_array("SELECT MAX(hardware_id) FROM hardware;");
Обратите внимание, что MySQL специальная команда «последней вставки идентификатор» доступен во всех клиентов (так как он реализован сервер сторона) и ограничивается соединением клиента. Это означает, что если вы не делаете дополнительной вставки внутри одного и того же клиента, вы должны быть в безопасности! – arkascha
уже ответил здесь: http://stackoverflow.com/questions/13893519/how-can-i-call-a-mysql-function-like-mysql-insert-id-from-perl-im-im-using-db –
И .... поэтому все базы данных должны поддерживать 'INSERT ... RETURNING'. Все эти вещи на уровне сеанса глупы. –