[MySQL 4.1] Primärschlüssel erfragen ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 4.1] Primärschlüssel erfragen ?

    Hallo Leute,
    bin neu in diesem Forum und in Sql noch nicht so fitt. Daher meine Frage, die für Euch, so hoffe ich, leicht zu lösen ist.

    Folgende INSERT-Anweisung wird durchgeführt:

    INSERT INTO `tab_kontakt`
    ( `primaer_kontakt` , `pk_firma_land` )
    VALUES (NULL , '$index_firma');

    Zur Erklärung: primaer_kontakt ist der Primär-Schlüssel der Tabelle, als auto-increment definiert und durch die Übergabe von NULL neu vergeben. Soweit alles klar.
    Diesen eben vergebenen Primär-Schlüssel brauche ich nun aber als Fremd-Schlüssel in einer anderen Tabelle. Der Eintrag pk_firma_land kann mehrfach in der Tabelle vorkommen, ist also nicht eindeutig.
    Nun meine Frage, wie erhalte ich den neu vergebenen Primär-Schlüssel möglichst schnell ?
    Bitte um schnelle Hilfe, danke im voraus, ich zähle auch Euch,
    Cu Erwin6330

  • #2
    in php sollte dir die funktion mysql_insert_id() helfen

    mfg

    Kommentar


    • #3
      Ich habs doch gewusst,

      Danke, genau das was ich gesucht habe, dürft wohl eine Rekordzeit für eine Antwort sein.

      Danke Trashar, war spitze.

      Cu Erwin6330

      Kommentar


      • #4
        4 Minuten.. geht eigentlich dennoch danke für die blumen!

        Kommentar


        • #5
          Wenn du es in SQL-Verwenden willst, kannst du auch INSERT_ID() verwenden.
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Kommentar


          • #6
            Original geschrieben von Shurakai
            Wenn du es in SQL-Verwenden willst, kannst du auch INSERT_ID() verwenden.
            Nein, die beiden Varianten sind nicht äquivalent.
            mysql_insert_id() liefert die letzte ID des letzten INSERTs der aktuellen Session zurück, während INSERT_ID() die letzte ID des letzten INSERTs generell zurück gibt.
            Das ist ein großer Unterschied!

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Original geschrieben von ghostgambler
              Nein, die beiden Varianten sind nicht äquivalent.
              mysql_insert_id() liefert die letzte ID des letzten INSERTs der aktuellen Session zurück, während INSERT_ID() die letzte ID des letzten INSERTs generell zurück gibt.
              Das ist ein großer Unterschied!
              Und das hast Du wo gelesen?!?! ... In Deiner Glaskugel?!?!

              Mein MySQL 5.0.24 gibt den Wert Session abhängig wieder ... !
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                Original geschrieben von goth
                Und das hast Du wo gelesen?!?! ... In Deiner Glaskugel?!?!
                Ne, in meinem Fernseher

                Hm ... hast recht, hatte mich da auf closure verlassen, weil der meinte dass man eine Transaktion bräuchte um die ID der aktuellen Connection zurück zu kriegen.
                Entweder weicht MySQL da (mal wieder) vom Standard ab, oder closure hat sich geirrt *zucks*
                http://dev.mysql.com/doc/refman/5.1/...functions.html
                The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_INCREMENT value generated for most recent statement affecting an AUTO_INCREMENT column by that client. This value cannot be affected by other clients, even if they generate AUTO_INCREMENT values of their own. This behavior ensures that each client can retrieve its own ID without concern for the activity of other clients, and without the need for locks or transactions.

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar

                Lädt...
                X