# Tabellen gleichzeitig befüllen?



## mas (29. Mrz 2006)

Hallo!
Ich hab da eine konzptionelle Frage.

Angenommen ich möchte einen Auftrag in einer Tabelle speichern und die gekauften Produkte eines Auftrages in einer anderen Tabelle.

Tabelle Auftraege: Auftrag_id, Kunden_id, zusatzinfo
Tabelle gekaufteProdukte : Auftrag_ID,Produkt_ID,Menge

Angenommen meine Auftrag_ID wird von der Datenbank automatisch erzeugt
(Int auto_increment)

D.h sie wird erst zum Zeitpunkt des :
insert into Auftraege (Kunden_id,Zusatzinfo) values("hugo","superversand")

Wie kann ich dann "gleichzeitig, die zumm Auftrag gehörenden Produkte abspeichern?
Dazu bräuchte ich ja die Auftrags_ID, die erst erzeugt wird?

Ich muesste ja in die Gekaufte Produkte die zugehörige Auftrag_ID speichern, sonst weiß ich ja nicht was zum Auftrag gehört.

Braucht man dazu mehrere Statements? 1. Insert Auftrag, dann iregndwie die ID holen, und dann merhere Inserts für die Produkte , oder gehtd as iregndwie simpler?

lg
mas


----------



## Caffè Latte (29. Mrz 2006)

Hi,

gleichzeitig geht ja wohl nicht, aber nacheinander. Die ID gibt dir dein DBMS wieder (bei MySQL z.B. mit "select LAST_INSERT_ID();").

Hoffe es hilft,

Caffè Latte


----------



## mas (30. Mrz 2006)

Super! Damit sollte das gehen.

Das heißt ich gehe so vor:

insert into auftrage (undennummer)  values ("1234");

dann:

select LAST_INSERT_ID() from auftrage;

damit erhalte ich die id des Auftrages und trage die in die Produktliste ein!


DANKE!!!!


----------



## Caffè Latte (30. Mrz 2006)

Hi,

ja, genau so müsste es gehen. LAST_INSERT_ID() ist auch sessionbezogen, d.h. du brauchst keinen Lock auf die Tabelle setzen.

Caffè Latte


----------

