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

Qual è il modo standard per ottenere l'ultimo ID inserto?

Vedi questa risposta Recupera l'ID riga inserito in SQL

In breve, non esiste un modo per eseguire questa operazione su più database, ad eccezione di MAX(ID), ma non è un risultato garantito e presenta molte insidie, ad es.

  • altri inserimenti possono trovarsi tra l'ultimo inserimento e la query massima
  • non può essere utilizzato con tabelle di transazione elevate (max emetterà un blocco di lettura, i metodi specifici di rdbms non leggono da nessuna tabella)

Lo standard ANSI relativo a identity/autonumber/auto_increment/sequences è apparso per la prima volta in SQL:2003 in attesa di attuazione da parte di tutti i principali RDBMS. Molto probabilmente assomiglierà a sequenze Oracle/PostgreSQL.

Un'altra modifica in SQL:2003 è OUTPUT USING CLAUSE ma ci sono pochissime informazioni a riguardo. Sybase e SQL Server hanno fatto cose diverse con esso, quindi non è ancora chiaro come andrà a finire. SQL Server lo implementa come

INSERT INTO TBL(..)
OUTPUT inserted.identity_col
INTO @sometablevar
VALUES(..)