Mysql
 sql >> Database >  >> RDS >> Mysql

(mysql, php) Come ottenere il valore del campo auto_increment prima di inserire i dati?

Il valore di autoincremento viene generato dal database stesso, al termine dell'inserimento; il che significa che non puoi ottenerlo prima di aver eseguito la query di inserimento effettiva.

La soluzione che hai proposto non è quella che viene utilizzata spesso, il che sarebbe :

  • inserisci alcuni dati semivuoti
  • ottieni il valore di incremento automatico che è stato generato
  • fai i tuoi calcoli, usando quel valore di incremento automatico
  • aggiorna la riga per inserire i dati nuovi/completi -- usando l'autoincremento generato in precedenza in where clausola dell'update query, per identificare quale riga viene aggiornata.

Naturalmente, come precauzione di sicurezza, tutte queste operazioni devono essere eseguite in una transazione (per garantire un comportamento "tutto o niente")


Come pseudocodice :

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