Mysql
 sql >> Base de données >  >> RDS >> Mysql

(mysql, php) Comment obtenir la valeur du champ auto_increment avant d'insérer des données ?

La valeur d'auto-incrémentation est générée par la base de données elle-même, lorsque l'insertion est effectuée; ce qui signifie que vous ne pouvez pas l'obtenir avant d'avoir effectué la requête d'insertion proprement dite.

La solution que vous proposez n'est pas celle qui est souvent utilisée -- qui serait :

  • insérer des données à moitié vides
  • obtenir la valeur d'auto-incrémentation qui a été générée
  • faites vos calculs en utilisant cette valeur d'auto-incrémentation
  • mettre à jour la ligne pour mettre en place les nouvelles données complètes -- en utilisant l'auto-incrémentation générée précédemment dans le where clause de la update requête, pour identifier quelle ligne est mise à jour.

Bien entendu, par mesure de sécurité, toutes ces opérations doivent être effectuées dans une transaction (pour assurer un comportement "tout ou rien")


En pseudo-code :

begin transaction
insert into your table (half empty values);
$id = get last autoincrement id
do calculations
update set data = full data where id = $id
commit transaction