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

Hvad er standardmåden for at få det sidste indsættelses-id?

Se dette svar Hent indsat række-id i SQL

Kort sagt er der ingen måde at gøre dette på tværs af databaser, undtagen MAX(ID) - men det er ikke et garanteret resultat og har mange mange faldgruber, f.eks.

  • andre indsættelser kan komme mellem sidste indsættelse og maks. forespørgsel
  • kan ikke bruges med høje transaktionstabeller (max vil udstede en læselås, rdbms-specifikke metoder læser ikke fra nogen tabel)

ANSI-standarden, der vedrører identitet/autonumber/auto_increment/sequences, dukkede først op i SQL:2003 afventer implementering af alle større RDBMS. Det vil højst sandsynligt ligne Oracle/PostgreSQL-sekvenser.

En anden ændring i SQL:2003 er OUTPUT USING CLAUSE men der er meget lidt information om det. Sybase og SQL Server har gjort forskellige ting med det, så det er endnu uklart, hvordan det vil udvikle sig. SQL Server implementerer det som

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


  1. Om pglogisk ydeevne

  2. loop mysql resulterer i php uden for mysql-forespørgslen

  3. Forskellen mellem TIL OPDATERING AF og TIL OPDATERING

  4. Hvorfor vil simple If ELSE Statement ikke virke i mySql