Olly: Primärschlüssel

Hallo,

ich habe eine Tabelle in einer mySQL-DB mit einem Primärschlüssel "auto_increment" angelegt. Gibt es eine Möglichkeit den nächsten automatisch zu erstellenden Primärschlüssel abzufragen, ohne daß dieser erstellt wurde?

Thx

Olly

  1. Hi,

    ich habe eine Tabelle in einer mySQL-DB mit einem Primärschlüssel "auto_increment" angelegt. Gibt es eine Möglichkeit den nächsten automatisch zu erstellenden Primärschlüssel abzufragen, ohne daß dieser erstellt wurde?

    Du kennst die Funktion MAX()? Sie liefert dir den Maximalwert eines Feldes (integer zB.)
    Wenn Du sie auf den Primärschlüssel anwendest bekommst Du den aktuell höchsten Wert ... plus eins ist der Nächste (Angenommen Du hast incementierst um 1, man kann ja um jede beliebige Zahl incrementieren)

    schönen Tag noch

    ciao
    romy

  2. Halihallo Olly

    ich habe eine Tabelle in einer mySQL-DB mit einem Primärschlüssel "auto_increment" angelegt. Gibt es eine Möglichkeit den nächsten automatisch zu erstellenden Primärschlüssel abzufragen, ohne daß dieser erstellt wurde?

    Die Lösung von romy ist richtig, fachlich noch etwas korrekter wäre:

    SHOW TABLE STATUS FROM db_name LIKE "tbl_name"

    und dann das Feld: Auto_increment

    diese Abfrage greift direkt auf den Table-Header zu und somit auf die Quelle per se,
    wo diese Information gespeichert wird. Mit anderen Worten: Die Datenbank selber wird nie
    ein SELECT MAX(id)+1 ausführen, um den nächsten AutoIndex zu finden, sie wird die
    Information aus dem TableHeader holen, wie es SHOW TABLE STATUS macht.

    Viele Grüsse

    Philipp

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
    1. Die Lösung von romy ist richtig, fachlich noch etwas korrekter wäre:

      SHOW TABLE STATUS FROM db_name LIKE "tbl_name"

      und dann das Feld: Auto_increment

      diese Abfrage greift direkt auf den Table-Header zu und somit auf die Quelle per se,
      wo diese Information gespeichert wird. Mit anderen Worten: Die Datenbank selber wird nie
      ein SELECT MAX(id)+1 ausführen, um den nächsten AutoIndex zu finden, sie wird die
      Information aus dem TableHeader holen, wie es SHOW TABLE STATUS macht.

      Hi Philipp,

      thx, das hab ich gesucht!!

      Grüße

      Olly

      1. So, jetzt hab ich auch den PHP-Code, der den nächsten Primärschlüssel ausspuckt:-)

        $result = mysql_query("SHOW TABLE STATUS FROM $strDBName LIKE '$strTableName'");
        $row = mysql_fetch_assoc($result);
        echo $row['Auto_increment'];