Tom: Multi-Statement und Integrität der Daten

Beitrag lesen

Hello,

omg viel dank Dedlix ... da sucht man den Fehler wie blöd und merkt ... der error will mir eigentlich sagen das ich nicht in falschen Datenbank suchen sollte -.-

... deshalb solltest Du nicht nur alle Statusmeldungen (Fehlercodes) auswerten, sondern auch immer über ein qualifiziertes Handle (Connection) zugreifen.

Außerdem hat Deine Überlegung noch eine dicke Macke, die im aktiven Betrieb zu Fehlern führen wird.

Deine Vorgehensweise müsste auf jeden Fall so aussehen:

sperre Tabelle
  hole größten Wert
  zähle ih eins rauf
  speichere neuen Satz
  entsperre Tabelle

Das gilt auch für MySQL, nicht nur für Zähler auf Flatfilebasis.

Wenn Du aber das Select und das Insert Statement in einem gemeinsamen zusammenbauen kannst, dann kannst Du Dir das Sperren sparen, da einzelne Queries DBMS-weit serialisiert und atomar ausgeführt werden. Das gilt aber eben nicht, wenn Du zwei Queries benötigst. Da passen dann beliebig viele andere Queries anderer Connections dazwischen.

Ich weiß leider nicht, ob man mit MySQL inzwischen ein Subselect auf Max() in ein Insert einbauen kann. Wer kann helfen?

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

Tom

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