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

Recupero degli ultimi ID inseriti per più righe

La chiamata last_insert_id() ti dà l'id della PRIMA riga inserita nell'ultimo batch. Tutti gli altri inseriti sono garantiti sequenziali.

A meno che tu non stia facendo qualcosa di molto strano, questo ti permette di calcolare l'ID di ogni riga abbastanza facilmente.

In realtà il comportamento varia in 5.1 a seconda dell'impostazione del parametro innodb auto increment mode; questo non dovrebbe importare. Finché non lo modifichi dall'impostazione predefinita, vedrai il comportamento previsto.

Ci sono casi occasionali in cui ciò non fa ciò che ti aspetti e non è utile, ad esempio se esegui un AGGIORNAMENTO DELLA CHIAVE DUPLICATA o INSERTO IGNORA. In questi casi, dovrai fare qualcos'altro per calcolare gli ID di ogni riga.

Ma per un semplice batch INSERT vaniglia, senza valori specificati per la colonna auto-inc, è facile.

Una descrizione completa di come sono gli incrementi automatici gestito in innodb è qui