Dieter: Auf Ergebnis in Batch Statement zugreifen

Hi,

ich habe folgendes Problem:
In einer Java-Anwendung füge ich mehrere Statements zu einem
Batch Statement zusammen und feuer das an eine mysql DB ab.
Dabei wird ggf. an verschiedenen Stellen die LAST_INSERT_ID()
gebraucht, um bei einem INSERT-Statement einen Fremdschlüssel zu
setzen.

Das funktioniert beim ersten INSERT-Statement wunderbar,
danach, wenn allerdings mehrere Datensätze den gleichen Fremdschlüssel bekommen sollen, dann funktioniert das nicht,
weil sich die LAST_INSERT_ID() nach dem ersten INSERT geändert hat.

Meine Frage:
Gibt es die Möglichkeit die LAST_INSERT_ID() zwischenzuspeichern,
so dass sie von mehreren Folgestatements benutzt werden kann?
Aufgrund des Batch-Konstrukts ist eine anwendungsseitige Speicherung
der ID nicht möglich...

Das ganze nochmal in kurz (und hoffentlich verständlich), so wie
es vom Prinzip her funktionieren soll:

INSERT ..... ; SELECT LAST_INSERT_ID() AS lid; INSERT INTO bla ... VALUES (d,e, lid); INSERT INTO blabla... VALUES (f, g, lid)

(So funktioniert das natürlich nicht...)

Ich hoffe das war nicht zu umständlich erklärt :-/

Vielen Dank für Eure Hilfe!

  1. yo,

    Gibt es die Möglichkeit die LAST_INSERT_ID() zwischenzuspeichern,
    so dass sie von mehreren Folgestatements benutzt werden kann?

    sicherlich wird dir ein "ja, es geht" nicht ausreichen. komme mehr aus der Oracle welt und da gibt es sowas schönes wie PL/SQL mit vielen porgrammiertypschen möglichkeiten wie IF, FOR, Variablen, etc. unter mysql habe ich zumindestens die verwendung von benutzervariablen gefunden, die du für dein Problem verwenden kannst.

    set @variablen_name := mysql_insert_id() ;

    Ilja