Hi sx2008
Ich verstehe übrigens nicht so ganz, was du mit der LastId eigentlich bezweckst.
Die
DB besteht aus insgesamt 7 Tabellen, die alle untereinander verknüpft sind; 2 davon mit n:m-Beziehungen, der Rest ist 1:n. Den letzten eingefügten/erzeugten Wert brauche ich für den Fremdschlüssel der Detailtabelle.
Falls das Feld idBild ein Autoincrement-Feld ist muss man es allerdings beim Insert weglassen.
Dann ergibt sich allerdings das Problem, dass man nicht weiss mit welcher ID der letzte Datensatz eingefügt wurde. (was passiert wenn mehrere Clients quasi gleichzeitig einfügen?)
Die Primärschlüssel sämtlicher Tabellen sind autoinc-Felder.
MySQL kennt die Funtion 'SELECT_LAST_INSERT_ID', die den letzten erzeugten Autoinc-Wert zurückliefert(InnoDB). Das hat ja erstmal auch funktioniert - so, wie es mir jetzt erscheint, glaub ich mich zu erinnern, dass ich erstmal diese Prozedur aufbaute, bevor ich die nächsten Insert-Prozeduren schrieb. Und seither krieg ich die bewusste Fehlermeldung...
Die Funktion 'SELECT_LAST_INSERT_ID' ist übrigens Verbindungsbezogen und mindestens der in Bearbeitung stehende Datensatz gesperrt.
MySQL 5.1.xx ist da recht überzeugend.
Ich würde empfehlen auf Autoincrement-Felder komplett zu verzichten und stattdessen die neue ID direkt vor dem Insert zu ermitteln.
Das hab ich mir auch schon überlegt, hatte dann aber den Eindruck, dass das DBX-Framework von DelphiXE inzwischen ein recht starkes Werkzeug ist. Fundierte Kenntnissse des Frameworks würden mir wohl bei der Entwicklung weiterer
DB-bezogener Programme gute Dienste leisten, su dass ich vieles nicht mehr 'barfuss machen' muss.
Ich denk, ich werd' mal ein Testprogrämmchen zum Austesten des Frameworks schreiben und hier vorerst auf 'Indexvergabe per Hand' umsteigen.
Gleichwohl interessiert es mich immer noch, wenn irgendwer Kenntnisse über das DBX-Framework hat.
Gruss
Delbor