Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist der Standardweg, um die letzte Insert-ID zu erhalten?

Siehe diese Antwort Eingefügte Zeilen-ID in SQL abrufen

Kurz gesagt, es gibt keine datenbankübergreifende Möglichkeit, dies zu tun, außer MAX(ID) - aber das ist kein garantiertes Ergebnis und hat viele, viele Fallstricke, z

  • andere Einfügungen können zwischen der letzten Einfügung und der maximalen Abfrage liegen
  • kann nicht mit Tabellen mit hohen Transaktionen verwendet werden (max setzt eine Lesesperre, rdbms-spezifische Methoden lesen aus keiner Tabelle)

Der ANSI-Standard, der sich auf Identität/autonumber/auto_increment/sequences bezieht, erschien erstmals in SQL:2003 wartet auf die Implementierung durch alle großen RDBMS. Es wird höchstwahrscheinlich Oracle/PostgreSQL-Sequenzen ähneln.

Eine weitere Änderung in SQL:2003 ist die OUTPUT USING CLAUSE aber es gibt sehr wenig Informationen darüber. Sybase und SQL Server haben verschiedene Dinge damit gemacht, daher ist noch unklar, wie es sich entwickeln wird. SQL Server implementiert es als

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