alex_: increment wert aus mysql lesen

Hi leuts,

ich würde gerne wissen wie ich von einer bestimmten tabelle den aktuellen wert des auto_increment counters bestimmen kann.

ich habe was gelesen LAST_INSERT_ID() aber das geht nur im zusammenhang mit einem vorherigen insert, das will ich nicht.
dann hab ich was gelesen von $insertid = $dbh->{'mysql_insertid'};
aber wo ist da der tabellenbezug?

fakt ist ich habe in einer db mehrere tabellen und überall solch auto_increments und nun will ich von einer bestimmten tabelle den stand des counters, nur wie?

danke, alex

  1. Hallo!

    Ich hab ne Idee, aber die ist nicht so elegant. Ausserdem kenne ich mich mit Perl nicht aus und kann die blos sagen, was du zu tun hättest, und nicht wie:
    Als erstes könnte man in die Tabelle was reinschreiben und davon die ID auslesen. Hinterher löscht man den Eintrag wieder. Die aktuelle ID ist also ID+1.

    Nico

    1. Hallo!

      Ich hab ne Idee, aber die ist nicht so elegant. Ausserdem kenne ich mich mit Perl nicht aus und kann die blos sagen, was du zu tun hättest, und nicht wie:
      Als erstes könnte man in die Tabelle was reinschreiben und davon die ID auslesen. Hinterher löscht man den Eintrag wieder. Die aktuelle ID ist also ID+1.

      Nico

      nein das will ich nicht, weil ich dadurch unnötig ids verschwende...

  2. Moin,

    wie wäre ein
    SELECT id FROM tabelle ORDER BY id DESC;?
    Dann ist die höchste ID der erste Wert im Resulset.

    SteBu

    1. Hi,

      wie wäre ein
      SELECT id FROM tabelle ORDER BY id DESC;?

      Wenn schon, dann noch mit LIMIT dazu - sonst werden unnötigerweise alle IDs übertragen, obwohl nur eine benutzt wird.

      Oder gleich nur die MAXimale id ausgeben lassen:

      select max(id) from tabelle;

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hi,

        wie wäre ein
        SELECT id FROM tabelle ORDER BY id DESC;?

        Wenn schon, dann noch mit LIMIT dazu - sonst werden unnötigerweise alle IDs übertragen, obwohl nur eine benutzt wird.

        Oder gleich nur die MAXimale id ausgeben lassen:

        select max(id) from tabelle;

        cu,
        Andreas

        nein, alles falsch.
        die höchste id muss nicht der aktuelle counter sein, falls jemand nämlich was gelöscht hat...

    2. hi,

      wie wäre ein
      SELECT id FROM tabelle ORDER BY id DESC;?
      Dann ist die höchste ID der erste Wert im Resulset.

      und was hat die aktuell höchste ID mit dem stand des auto_increment-"counters" zu tun?

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Moin,

        und was hat die aktuell höchste ID mit dem stand des auto_increment-"counters" zu tun?

        OK, ans löschen von Datensätzen habe ich in dem Moment nicht gedacht ;).

        Eine Notlösung für das Problem wäre, nach jedem "normalem" Insert die last_insert_id in einer zusätzlichen Tabelle zu notieren.

        SteBu

  3. am elegantesten scheint mir momentan:

    show table status
    und dann einfach die Auto_increment der richtigen tabelle zu ziehen.

    alex