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

Ist es konzeptionell richtig, ein SELECT MAX (id) usw. auszuführen, um die letzte eingefügte Zeile zu finden?

Das scheint subjektiv zu sein, aber ich würde sagen, nein, es ist konzeptionell nicht richtig, weil:

  • Sie möchten die zuletzt eingefügte Zeile
  • aber Ihre Abfrage betrachtet die maximale id Wert

Ja, es gibt einen Zusammenhang zwischen der maximalen ID und der letzten Einfügung, aber bedenken Sie Folgendes:

  • Was ist, wenn die zuletzt eingefügte Zeile gelöscht wurde?

Antwort auf MySQL:Sie erhalten unterschiedliche Ergebnisse. Beachten Sie, dass es nicht einmal Multithreading oder mehrere Prozesse geben muss, damit dies fehlschlägt. Das liegt daran, dass es sich um zwei verschiedene Dinge handelt (die zugegebenermaßen oft zu denselben Ergebnissen führen können).

select max(id) from <tablename>

gegen

select last_insert_id()

(Rate mal, welches richtig ist.)

@Dems wies darauf hin, dass das OP mehrdeutig ist. Ich werde meinen Hauptpunkt klarstellen:

Wir sprechen von drei verschiedenen Informationen:

  • maximale id Wert
  • id der zuletzt eingefügten Zeile, spezifisch für eine Sitzung
  • id der zuletzt in die Tabelle eingefügten Zeile (unabhängig von der Sitzung)

Das Gefährliche daran ist, dass die Abfrage nach einem manchmal die richtige Antwort für einen anderen liefert – aber nicht immer .