Recupero ‘ID’ appena inserito

Non è raro di avere la necessità di recuperare un ID (identificativo chiave primaria) che sia stato appena inserito in una tabella tramite una query di accodamento come questa:


<%

‘Apertura connessione “conn”

‘Inserimento valori

strSQL = “INSERT INTO rubrica (cognome, nome) VALUES (‘Rossi’, ‘Marco’)”

conn.Execute(strSQL)

%>

A prima vista, la soluzione immediata potrebbe essere quella di ordinare la tabella in ordine decrescente di ID e, tramite la clausola TOP 1 (che funziona esclusivamente su database di tipo Access però!), recuperarne solo il primo record (ovvero l’ultimo ad essere stato inserito):


<%

‘Recupero dell’ultimo ID: clausola TOP 1 e ID DESC

strSQL = “SELECT TOP 1 ID FROM rubrica ORDER BY ID DESC”

%>

Utilizzando questo sistema però estrarremo effettivamente l’ultimo record inserito, ma non potremmo avere la sicurezza completa che si tratti proprio del nostro.

In molti casi infatti, quando più utenti hanno accesso alla stessa tabella, potrebbero verificarsi inserimenti concorrenti e potremmo trovarci con un ID appartenente sicuramente “all’ultimo record”, ma non necessariamente a quello inserito da noi, bensì da chi, casualmente, ha immesso il proprio pochi (infinitesimi) istanti dopo di noi.

Per superare questo problema apparentemente senza soluzione dobbiamo riuscire a legare il record inserito con l’operazione che l’ha immesso nella tabella, quasi si trattasse di un’operazione unica.

Per ottenere tale risultato possiamo avvalerci di una particolare sintassi dell’istruzione SELECT, per di più non esclusiva dei database Access, che fa uso della clausola @@IDENTITY:


<%

‘Settaggio recordset objRS

set objRS = Server.CreateObject(“ADODB.recordset”)

‘Query

strSQL = “SELECT @@IDENTITY FROM rubrica”

‘Apertura del recordset ed esecuzione della query

objRS.Open strSQL, conn

ultimo_id = objRS(0)

‘Chudura e distruzione dell’oggetto recordset

objRS.Close

set objRS = nothing

‘Chiusura connessione “conn”

%>

Utilizzando il codice riportato sopra, nella variabile ultimo_id avremo finalmente l’ID del “nostro” ultimo record inserito

I Video di HTML.it

Aprirsi anche al no profit. #dilloalfuturo