basti_p: MySQL autoincrement-Wert

Hallo,

gibt es eine Möglichkeit, in einem MySQL-Insert-Statement schon auf den autoincrement-Wert für diesen Datensatz zuzugreifen?

Bsp: INSERT INTO table SET field=autoincrement-Wert

Danke und Grüße
Basti

  1. Hi,

    gibt es eine Möglichkeit, in einem MySQL-Insert-Statement schon auf den autoincrement-Wert für diesen Datensatz zuzugreifen?

    Nein.

    Du müsstest den derzeit aktuellen bzw. nächsten Wert auslesen (nein, MAX ist untauglich, es könnten Datensätze gelöscht worden sein) - und dann dieses auslesende Statement zusammen mit dem INSERT in eine Transaktion kapseln, damit zwischenzeitlich kein anderer Prozess schon einen neuen Datensatz angelegt haben kann.

    Wofür brauchst du das denn überhaupt?
    Innerhalb einer Tabelle den Wert redundant vorzuhalten dürfte im allgemeinen jedenfalls nicht allzu sinnvoll sein.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Hallo,

      Wofür brauchst du das denn überhaupt?
      Innerhalb einer Tabelle den Wert redundant vorzuhalten dürfte im allgemeinen jedenfalls nicht allzu sinnvoll sein.

      Ich möchte eine Bestellnummer speichern: diese setzt sich aus Teilen des Datums, auffüllenden Nullen und der ID des Datensatzes zusammen. Ich kann natürlich auch nur das Datum speichern und den Rest bei der Ausgabe zusammensetzen - aber so hätte ich den Luxus eines Feldes mit der kompletten Bestellnummer gehabt.

      Grüße Basti

  2. Bsp: INSERT INTO table SET field=autoincrement-Wert

    Vielleicht so:
    INSERT INTO table SET field=last_insert_id()

    Struppi.

    1. Hallo,

      Vielleicht so:
      INSERT INTO table SET field=last_insert_id()

      Habe ich gerade getestet, da wird leider 0 eingetragen.

      Danke und Grüße Basti

      1. Hi!

        Vielleicht so:
        INSERT INTO table SET field=last_insert_id()
        Habe ich gerade getestet, da wird leider 0 eingetragen.

        Oder irgendwas anderes, wenn zuvor in der selben Sitzung ein INSERT mit auto_increment stattfand.

        Lo!

      2. INSERT INTO table SET field=last_insert_id()

        Habe ich gerade getestet, da wird leider 0 eingetragen.

        Bei mir die letzte ID.

        Struppi.

  3. Hi!

    gibt es eine Möglichkeit, in einem MySQL-Insert-Statement schon auf den autoincrement-Wert für diesen Datensatz zuzugreifen?

    Jein. Es gibt Trigger, die man nach dem Einfügen eines Datensatzes feuern kann. Die Doku sagt nur, dass der BEFORE-Trigger für die auto_increment-Spalte 0 liefert, also gehe ich, ohne es geprüft zu haben, davon aus, dass der AFTER-Trigger den Wert zur Verfügung stellt.

    Lo!