sql >> Databasteknik >  >> RDS >> Mysql

Vad är standardsättet för att få det senaste infognings-id:t?

Se det här svaret Hämta infogat rad-ID i SQL

Kort sagt, det finns inget tvärdatabassätt att göra detta på, förutom MAX(ID) - men det är inte ett garanterat resultat och har många många fallgropar, t.ex.

  • andra infogning kan komma mellan senaste infogning och maxfråga
  • kan inte användas med höga transaktionstabeller (max kommer att utfärda ett läslås, rdbms-specifika metoder läser inte från någon tabell)

ANSI-standarden som relaterar till identitet/autonumber/auto_increment/sequences dök upp först i SQL:2003 väntar på implementering av alla större RDBMS. Det kommer med största sannolikhet att likna Oracle/PostgreSQL-sekvenser.

En annan förändring i SQL:2003 är OUTPUT USING CLAUSE men det finns väldigt lite information om det. Sybase och SQL Server har gjort olika saker med det, så det är ännu oklart hur det kommer att utvecklas. SQL Server implementerar det som

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


  1. 5 skäl till varför du behöver en bra databas

  2. SQLite GLOB

  3. Logga felmeddelanden i Oracles lagrade procedur

  4. Ändra tabell för att ge utländsk nyckel begränsning