tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1539
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LxLehrling LxLehrling ist offline Mitglied
    Registriert seit
    Mar 2009
    Beiträge
    19
    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
     

  2. #2
    Avatar von Codago
    Codago Codago ist offline Mitglied Bronze
    Registriert seit
    May 2005
    Beiträge
    33
    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
     

  3. #3
    planb2000 planb2000 ist offline Mitglied Gold
    Registriert seit
    Mar 2008
    Beiträge
    133
    Hallo,

    MySql kann auch Trigger:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    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/...e-trigger.html

    Ich hoffe ich konnte Dir helfen.

    Grüße
     

  4. #4
    LxLehrling LxLehrling ist offline Mitglied
    Registriert seit
    Mar 2009
    Beiträge
    19
    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
     

Ähnliche Themen

  1. MySQL Abfrage aus 3 Tabellen
    Von hiltwin im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 13.10.10, 21:18
  2. [MySQL] Insert Into in 2 Tabellen schreiben
    Von LarsB im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 03.05.10, 20:15
  3. MySQL Abfrage mit 2 Tabellen
    Von Kalma im Forum PHP
    Antworten: 13
    Letzter Beitrag: 12.06.09, 10:49
  4. MySQL abfrage von 5 Tabellen
    Von Marco-P im Forum PHP
    Antworten: 2
    Letzter Beitrag: 03.04.09, 00:13
  5. Mysql/PHP Abfrage 2 Tabellen
    Von Spontan im Forum PHP
    Antworten: 4
    Letzter Beitrag: 10.09.04, 15:59