Vitali: index erstellen - Primärschlüssel

Tach,

ich habe ein kleines Problem.
Ich habe ein Spale index als Primärschlüssel und weil der Inhalt nich zweimal vorkommen kann brauche ich einen kleine Schript der immer aufzählt  1 2 3 4 5 6 7 usw.

ich würde das so machen den letzten datensatz öffnen und den index auslesen und 1 dazu addiere. Aber ich habe kein Befehlt gefunden wie man der Zeigen auf den letzten datensatz setzt :-( bei ASP ist das leichter.

Wie macht Ihr das???

Gruß Vitali

  1. hallo,

    die Lösung für das ist relativ einfach.

    $sql="SELECT * FROM tabelle";
    $result=mysql_query($sql,$verbindung);
    while ($row = mysql_fetch_object($result))
    {
    $spalten_name = $row -> spalten_name
    }

    anschließend hast du den wert in der Variable $spalten_name

    1. Hi!

      $sql="SELECT * FROM tabelle";
      $result=mysql_query($sql,$verbindung);
      while ($row = mysql_fetch_object($result))
      {
      $spalten_name = $row -> spalten_name
      }

      anschließend hast du den wert in der Variable $spalten_name

      Das ist nicht so gut, wenn Du mal ein paar mehr Datensätze hast lannst Du das vergessen.

      Frage doch einfach genau den Datemsatz ab den Du haben willst, indem Du  Absteigend sortierst(ORDER BY spalte DESC) und anschließend das Ergebnis auf 1 limitierst(LIMIT 0,1)

      Aber in manchen RDMBS gibt es auch autoincrement, damit wird bei einem neuen Insert automatisch die neue ID vergeben.

      Grüße
      Andreas

      1. Danke das ist ein guter trick mit absteigen sortieren man ;-) ich setze aber lieber auf Auto wert

        Danke

        1. Moin!

          Danke das ist ein guter trick mit absteigen sortieren man ;-) ich setze aber lieber auf Auto wert

          Das ist ein ganz beschissener Trick, weil es keine Eindeutigkeit garantiert. Was ist, wenn zwei Prozesse gleichzeitig die derzeit höchste ID haben wollen?

          Der eine Prozess fragt zuerst ab, braucht aber eine gewisse Zeit, bis er den nächsten Datensatz schreibt. In der Zwischenzeit fragt der zweite Prozess und kriegt dieselbe maximale ID...

          - Sven Rautenberg

          --
          ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
          1. Hi!

            Das ist ein ganz beschissener Trick, weil es keine Eindeutigkeit garantiert. Was ist, wenn zwei Prozesse gleichzeitig die derzeit höchste ID haben wollen?

            Ja, kommt drauf an wofür man die ID will. Sonst gibt es ja noch LOCK... ;-)
            Wenn ich weiß das die Anwendung nur mit MySQL laufen soll würde ich auto-increment nehmen, sonst gibt es in PEAR eine Methode die nächste ID zu ermitteln, ich weiß zwar nicht wie das intern funktioniert, ich vermute mit einem Full-Table Lock was auch nicht unbedingt das Gelbe vom Ei ist, aber das ist wohl der Preis der Portabilität.

            Bessere Möglichkeit wäre evtl. ein Insert und dann mit last_insert_id ein Update machen.

            Viele Grüße
            Andreas

  2. Hallo Vitali,

    ich würde das so machen den letzten datensatz öffnen und den index auslesen und 1 dazu addiere.

    welche Datenbank? ich tippe jetzt mal auf mysql (in anderen geht es vmtl. ähnlich?) - da musst du die Spalte der automatisch hochzählen soll ein auto_increment verpassen ->http://www.mysql.de/doc/de/CREATE_TABLE.html (etwas nach unten scrollen).

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|