自動コミットを無効にして MySQL PDO を使用しています。
だから私は次のコードを持っています:
try
{
$db_connect_handle->beginTransaction();
$pdo_stmt_obj = self::$db_connect_handle->prepare($query_sql_str);
$pdo_stmt_obj->execute();
$db_connect_handle->commit();
}
catch (database_exception $e)
{
$db_connect_handle->rollBack();
print_r($e);
}
echo $db_connect_handle->lastInsertId();
INSERT
クエリは正常に動作します。しかし、私は の値を取得しません$db_connect_handle->lastInsertId()
。コミットする前に使用する必要がある PHP マニュアルを読みましたlastInsertId
が、中央のクエリ スクリプトがあり、トランザクションをコミットする前に SQL クエリの分類を実行したくありません。
次に、コードを次のように変更しました。
try
{
$pdo_stmt_obj = self::$db_connect_handle->prepare($query_sql_str.'; COMMIT;');
$pdo_stmt_obj->execute();
}
catch (database_exception $e)
{
$db_connect_handle->rollBack();
print_r($e);
}
echo $db_connect_handle->lastInsertId();
そして出来上がり!の値を取得します$db_connect_handle->lastInsertId()
。
私の質問は、これが のパフォーマンスに影響を与えるかどうか、そして作業INSERT
にも影響するかどうかです。$db_connect_handle->rollBack()
前もって感謝します。