Announcement

Collapse
No announcement yet.

Nächster Wert eines auto_increment-Feldes?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nächster Wert eines auto_increment-Feldes?

    Hallo,

    ich benötige den *nächsten* (nicht den letzten, wie ich den kriege, ist mir klar) Wert, der in ein auto_increment-Feld eingefügt wird. Also so was wie nextval in Postgres oder gen_id in Interbase/Firebird.

    last_insert_value+1 geht nicht, weil es ja sein kann, dass der letzte INSERT bei einer ganz anderen Tabelle stattgefunden hat - und bei multi-row inserts gibt es auch den ersten Wert zurück statt dem letzten, kann ich also nicht gebrauchen.

    Ich habe schon überlegt, ob ich eine eigene Tabelle mit allen Sequenzen und deren Werten anlege. Problem ist, das Ganze müsste auch mit mehreren Nutzern im Netz funktionieren.

    Könnte ich eine nicht transaktionsfähige Tabelle (z.B. TYPE=MYISAM) in eine ansonsten aus InnoDB-Tabellen bestehende DB pflanzen und dort jeweils meine aktuellen Werte abfragen bzw. diese erhöhen? Stehen die dann außerhalb meiner Transaktionen? Dann müsste das doch einigermaßen mehrplatzfähig zu machen sein, oder?

    Gruß,

    Stefan

  • #2
    Hallo,

    wie wäre es mit count(*) +1 ?

    Select count(*)From tabell

    Comment


    • #3
      @Tebo,
      und wenn Datensätze gelöscht wurden?
      probiere mal max(lfdnr) + 1

      cu Michae

      Comment


      • #4
        Das Problem an diesen Vorschlägen ist, dass jegliche SELECT-Anweisung Teil einer Transaktion wäre. Das heißt, der Vorgang wäre nicht Multi-User-fähig:

        1. Nutzer A startet Transaktion

        2. Nutzer B startet Transaktion

        3. Nutzer A holt den nächsten Wert mit SELECT ...

        4. Nutzer B holt den nächsten Wert mit SELECT ...

        Schon haben beide denselben Wert geholt. Bei Primärschlüsseln keine gute Sache... Daher kam mein Gedanke mit MyIsam.

        Inzwischen habe ich die ganze Anwendung so umstrukturiert, dass ich doch mit dem Last_insert_ID arbeiten kann. War viel Aufwand, aber wenigstens läuft es jetzt sicher.

        Trotzdem danke für die Ideen.

        Stefa

        Comment

        Working...
        X