L’argomento di cui parliamo fa riferimento ad una tabella di un database MySql, dove è stata definita una chiave primaria ID autoincrementale.
Vediamo come ottenere o recuperare per un data base MySql l’ultimo ID del record, riga, inserito in una tabella.
La gestione dei dati nel database MySQL e le query che utilizziamo sono molto simili agli altri database. Dopotutto il linguaggio che si esprime nelle query è davvero comune per tutti i database fatta eccezzione per qualche piccolo caso di sintassi.
Indice
Query SELECT
Se vogliamo ottenere o selezionare l’ID dell’ultimo record inserito, il modo piu semplice è quello di utilizzare una query SQL.
SELECT id FROM Tabella ORDER BY id DESC LIMIT 1
Oppure possiamo usare anche quest’altra query, che ci restituisce lo stesso risultato:
SELECT MAX(id) FROM Tabella
Considerazioni lato codice
Le query che vi abbiamo suggerito fanno riferimento a delle operazioni di manutenzione da svolgere direttamente sul database. Se state sviluppando un applicativo, ad esempio utilizzando il linguaggio PHP è bene porsi qualche problema. Ad esempio:
<?php /* Tentativo di connessione al server MySQL. Supponendo che tu stia eseguendo il server MySQL con impostazione predefinita (utente 'root' senza password) */ $link = mysqli_connect("localhost", "root", "", "demo"); // Verifica la connessione if($link === false){ die("ERRORE: Non posso collegarmi. " . mysqli_connect_error()); } // Tentativo esecuzione query insert $sql = "INSERT INTO persons (nome, cognome, email) VALUES ('Ross', 'Ciaglia', '[email protected]')"; if(mysqli_query($link, $sql)){ // Otteniamo l'ultimo id inserito $last_id = mysqli_insert_id($link); echo "Record inserito con successo. L'ultimo ID è: " . $last_id; } else { echo "ERROR: Non posso eseguire $sql. " . mysqli_error($link); } // Chiude la connessione mysqli_close($link); ?>
È possibile generare sequenze senza chiamare LAST_INSERT_ID (). Ma l’utilità della funzione è che il valore ID viene mantenuto nel server come ultimo generato automaticamente. È sicuro per più utenti perché più client possono emettere l’istruzione UPDATE e ottenere il proprio valore di sequenza con l’istruzione SELECT (o mysql_insert_id ()), senza influenzare o essere influenzati da altri client che generano i propri valori di sequenza.
Conclusioni
Abbiamo visto in questo articolo come MySql può ottenere o recuperare l’ultimo ID del record inserito. Vista l’importanza dell’argomento abbiamo dedicato una sezione del nostro Blog al database MySql che invitiamo a visitare.