JeuWeb - Crée ton jeu par navigateur
lastInsertId en cas de nombreuses requetes simultanées ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : lastInsertId en cas de nombreuses requetes simultanées ? (/showthread.php?tid=5229)



lastInsertId en cas de nombreuses requetes simultanées ? - php_addict - 08-02-2011

bonjour

je viens une nouvelle fois à vous car j'ai un doute sur PDO::lastInsertId

est t il primordiale d'utiliser lastInsertId dans une transaction ou pas? je veut dire si l'on fait simplement ceci et qu'il y ai à l'instant T une vingtaine de requêtes sql quasi simultanées:


$query = "INSERT INTO log (ip) VALUES (:ip) ";
$result = $connexion->prepare("$query");
$result->execute(array(':ip' => $ip ));
//
$id = $connexion->lastInsertId();

doit t on obligatoirement mettre ce bloc de code entre beginTransaction et commit tel que ?:


$connexion->beginTransaction(); // DEBUT TRANSACTION

$query = "INSERT INTO log (ip) VALUES (:ip) ";
$result = $connexion->prepare("$query");
$result->execute(array(':ip' => $ip ));
//
$id = $connexion->lastInsertId();

$connexion->commit(); // FIN TRANSACTION

bonne journée à vous !


RE: lastInsertId en cas de nombreuses requetes simultanées ? - Sephi-Chan - 08-02-2011

Je suppose que la transaction est de rigueur.


RE: lastInsertId en cas de nombreuses requetes simultanées ? - php_addict - 08-02-2011

je n'ai pas réellement trouvé d'info sur le sujet, mais dans le doute je vais utiliser les transactions...


RE: lastInsertId en cas de nombreuses requetes simultanées ? - Anthor - 08-02-2011

Citation :For LAST_INSERT_ID(), the most recently generated ID is maintained in the server on a per-connection basis. It is not changed by another client. It is not even changed if you update another AUTO_INCREMENT column with a nonmagic value (that is, a value that is not NULL and not 0). Using LAST_INSERT_ID() and AUTO_INCREMENT columns simultaneously from multiple clients is perfectly valid. Each client will receive the last inserted ID for the last statement that client executed.

http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html


RE: lastInsertId en cas de nombreuses requetes simultanées ? - php_addict - 08-02-2011

merci Anthor, je n'avais pas vu ca sur la doc...

mais je ne suis pas certain de comprendre la doc:

donc pas besoin de transaction pour un LastInsertId pour les connexions NON persistantes c'est ca? j'ai bon ?


RE: lastInsertId en cas de nombreuses requetes simultanées ? - Anthor - 08-02-2011

Oui.