Tom: wie die letzte ID einer mySQL-Tabelle auslesen?

Beitrag lesen

Hello,

Bei dieser Problematik geht es ein wenig ins Datenbankphilosophische.

Du verwirrst die Leute hier.
Denk bitte nochmal drüber nach, was der Sinn der eigentlichen Frage war.
https://forum.selfhtml.org/?t=145409&m=943676

Karl hat sehr genau beschrieben, was sein Anliegen ist.
Eine Lösung ist hierfür die von mir beschriebene
https://forum.selfhtml.org/?t=145409&m=943684

  • Tabelle sperren
  • Table-Status abfragen
  • Next-Insert-ID holen
  • Namen bilden für externe Daten
  • Datensatz eintragen
  • Tabelle entsperren

Ich habe ihm geantwortet, dass das ein Performance-Killer ist.
Außerdem haben "normale User" in üblichen Einrichtungen selten das LOCK TABLES Recht.
Das liegt aber daran, dass die "Administratoren" damit selten etwas anfangen können.

Alternativ habe ich ihm empfohlen, mittels LAST_INSERT_ID() zu arbeiten.
Und nun werde ich noch den Denkfehler beseitigen, den Karl mit dem Zeitverhalten seiner Anwendung hat:

  • Datensatz mit MP3 hochladen
      (Daten befinden sich nun in der Transfer-Area von PHP = im Temp-Verzeichnis)
  • mit dem temp-File arbeiten, um z.B. die Kopfdaten auszulesen
  • Datensatz zusammenstellen
      (Achtung: auf eichtiges Escaping für die Datenbank achten)
  • Datensatz abspeichern (mit Sperrvermerk oder Lock ausschließlich für den _Datensatz_)
  • Last-Insert-Id holen
  • Namen bilden für externe Daten (prüfen, ob der schon vorhanden ist?)
  • File aus dem Temp-File unter dem verifizierten Namen abspeichern
  • Update auf die DB, um den Sperrvermerk zu entfernen oder Unlock Record

Diese Lösung ist performant.
Sie benötigt keine Datei-Sperren.
Sie berücksichtigt die Write-Write-Lücke zwíschen den abhängigen Daten.

Wenn nämlich ein anderer Besucher den Datensatz aus der DB lesen würde, bevor die Datei wirklich abgespeichert wurde, würde sein MP3 leer sein, bzw. es gäbe einen File-Read-Error.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau