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 laupdate
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