Duplicate entry - ID finden

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

  • Duplicate entry - ID finden

    Hi, gibt es eine Möglichkeit bei dem Fehler -Duplicate entry- den Primary Key des bereits existierenden Tupels zu identifizieren?

    dachte an etwas in der Richtung:

    Code:
    query("SELECT * FROM ... ");
    
    if(errcode == 1062)
        query(" SQL-Anweisung zum herrausfinden des PimKeys ");
    Ich habe das Handbuch schon durchforstet, jedoch nichts gefunden. Aber villeicht habe ich es auch übersehen... . Würde eine riesige SELECT-Anweisung gerne umgehen

    vielen dank

  • #2

    du hast einen existierenden datensatz.
    du hast einen primary key.
    wenn du einen neuen datensatz einfügen willst, was machst du?
    was hast du vor?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      ok, villeicht sollte ich etwas weiter ausholen...

      Ich babe eine Tabelle (tbl1) mit einer Menge von Datensätzen. Die Tabelle hat einen Uniqe-Index über mehrere Spalten. In einer weiteren (tbl2) referenziere ich auf die erste. Wenn ich jetzt einen neuen Datensatz einfüge, sieht mein Script etwa so aus:

      Code:
      query("INSERT INTO tbl1 ...");
      
      $id = last_insert_id();
      
      query("INSERT INTO tbl2 (FK) VALUES ($id)");
      jetzt würde ich mir etwas in dieser richtung wünschen:

      Code:
      query("INSERT INTO tbl1... ");
      
      if(errcode == 1062)
          $id = query(" SQL-Anweisung zum herrausfinden des PimKeys ");
      else
          $id = last_insert_id();
      
      query("INSERT INTO tbl2 (FK) VALUES $id");
      Habe grade gesehen, das in meinem ersten Post die Anweisung INSERT und nicht SELECT sein sollte

      Kommentar


      • #4
        warum nicht erst mit einem select prüfen?

        Kommentar


        • #5
          Nunja das würde sicher funktionieren, aber ich frage mich, ob das nicht auch so möglich ist. Zumal ich die Uniqe-Prüfung gerne auf der Datenbankseite lassen würde und nicht mit einer vorgeschalteten SELECT anweisung im PHP-Code.

          Kommentar


          • #6
            Original geschrieben von zonthor
            Ich babe eine Tabelle (tbl1) mit einer Menge von Datensätzen. Die Tabelle hat einen Uniqe-Index über mehrere Spalten.
            Und womit verletzt du den? Mit den Daten, die du beim INSERT-Versuch benutzt hast.
            Welche das waren, sollte dein Script doch zwei Zeilen später noch wissen ...?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              also, es geht mir hier nicht um eine Lösung des Problems, sicher kann ich es lösen wenn ich eine SELECT .. FROM ... WHER ... AND ... AND ... AND ....... ; anweisung formuleren. Ich frage mich nur ob ich den key nicht auch direkt abfragen kann.

              Kommentar


              • #8
                z.B. so
                PHP-Code:
                select ds_id,
                   case 
                when col1='wert1' then 'rule violated' else col1 end col1,
                   case 
                when col2='wert2' then 'rule violated' else col2 end col2,
                   ...
                from ...
                where col1='wert1' or col2='wert2' or ... 
                dann bekommst du mindestens einen DS zur Auswertung. Danach brauchst du nur noch nach dem Wert 'rule violated' zu suchen, dann weisst du welchen Wert in welche Spalte schon existiert. Oder habe ich dich komplett falsch verstanden?

                Kommentar


                • #9
                  Ich denke er meint etwas viel simpleres:

                  Tabelle (firstname und lastname sind als UNIQUE definiert) hat folgende Datensätz :

                  1 | Franz | Meier
                  2 | Horst | Müller

                  Wenn er jetzt INSERT VALUES Horst, Müller macht, erhält er natürlich nen Fehler von der DB, dublicate bla bla.

                  Jetzt möchte er gerne wissen, dass Horst Müller schon unter ID zwei gespeichert ist.

                  (z.B. um dann sagen zu können "Ey du Nuss, Horst Müller gibts hier <a href="user.php?id=2">)

                  Kommentar


                  • #10
                    ja meine ich

                    Kommentar


                    • #11
                      Dann machste einfach danach ein QUERY mit WHERE .... AND .... ?!

                      Kommentar


                      • #12
                        Dann machste einfach danach ein QUERY mit WHERE .... AND .... ?!
                        Die könnte er auch davor machen. Aber das ist ja nicht gewollt.

                        Kommentar


                        • #13
                          Original geschrieben von TobiaZ
                          Die könnte er auch davor machen. Aber das ist ja nicht gewollt.
                          Die Frage ist ... WIESO

                          Kommentar


                          • #14
                            Wieso was?

                            Kommentar


                            • #15
                              Wieso er das nicht direkt erst prüft und dann einträgt oder so... :S

                              Kommentar

                              Lädt...
                              X