MySql Abfrage - INSERT INTO - 2 Tabellen

LxLehrling

Grünschnabel
Tag zusammen,

ich habe folgendes Problem und schreibe nun in der Hoffnung, das mir jemand vielleicht helfen kann.

Folgendes Problem:

Ich habe 2 Tabellen in der ich gleichzeitig daten reinschreiben will, das Problem besteht jedoch darin, das ich in die zweite tabelle, den Primärschlüssel reinschreiben muss, welcher in der ersten tabelle erst erzeugt werden muss.
Der Primärschlüssel wird ja automatisch erzeugt, da dieser den TYP AUTO INCREMENT hat und der muss halt gleichzeitg in die andere Tabelle.

Ich versuche das an einem kleinen Beispiel darzustellen

INSERT INTO t1,t2(
t1.name
t1.vname
t2.(id von t1) ---> Hier tritt dann mein Problem auf, wie kann ich das realisieern?


Danke schonmal im Voraus!

Lg

LxLehrling
 
Hi,
Insert arbeitet nur auf einer Tabelle. Du mußt also erst in die Tabelle schreiben, wo der auto-increment-Indexwert erzeugt wird und dann diese Tabelle auslesen, welches der höchste Index-Wert ist. Das ist Deine ID, die Du für den zweiten Insert in t2 verwendest. Allerdings ist dieses Verfahren nicht transaktionssicher, also mußte Du die Tabelle vorher locken (lock tables).

In Oracle kann ich mich dran erinnern, dass man mit Triggern auch einen Insert bemerken kann und datensatzweise die Informationen erhält, was durch die Transaktion eingefügt wurde und so hättest Du auch die gewünschte ID und kannst dann dort das zweite Insert machen - weiß nicht, ob Mysql das auch kann.

Grüße
Oliver
 
Hallo,

MySql kann auch Trigger:
SQL:
CREATE TABLE foo (
  id INT PRIMARY KEY auto_increment,
  type INT,
  content VARCHAR(255)
); 
 
CREATE TABLE bar (
  id INT ,
  type INT,
  content VARCHAR(255)
);
 
DROP TRIGGER IF EXISTS catchINSERT
CREATE TRIGGER catchINSERT AFTER INSERT ON foo
      INSERT INTO bar SET id = NEW.id;
END;
  
INSERT INTO foo VALUES ( 0, 3, 'hmmHOOO' );

select * from bar

Noch mehr zu Triggern bei mysql: http://dev.mysql.com/doc/refman/6.0/en/create-trigger.html

Ich hoffe ich konnte Dir helfen.

Grüße
 
Zuletzt bearbeitet von einem Moderator:
Erstmal vielen dank an beide,

habe nun erstmal die variante von Codago verwendet, da diese mir etwas einfacher schien.

Habe aber die Lock Tables erstmal weggelassen, da diese erstmal nicht so von bedeutung waren.

Nochmal Thx!

Lg

LxLehrling
 
Zurück