Announcement

Collapse
No announcement yet.

Nach Insert die Datensatznummer des neuen Satzes zurückgeben

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

  • Nach Insert die Datensatznummer des neuen Satzes zurückgeben

    Hallo,

    für mein Programm muss ich nach dem einfügen eines Datensatzes die Datensatznummer wissen. Der SQL-Server stellt die Variable @@identity
    zur Verfügung. Ist das der richtige weg?

    Das einfügen erfolgt über eine gespeicherte Prozedur in der ich dann den @@identity Wert zurückbekomme.

    Wenn jedoch bei der Tabelle ein Trigger zum Tragen kommt, der z.B. in
    einer anderen Tabellen einen Datensatz bearbeitet oder erzeugt, stimmen
    die Werte von @@identity nicht mehr.

    Gibt es hierfür eine Lösung ?

    Vielen Dank im voraus.

    MfG
    Stefan Glock

  • #2
    Habe das gleiche Problem gehabt.
    Meine Lösung: (da ich auf den neuen Wert nicht zugreifen konnte)

    - ich habe eine Tabelle angelegt, die die max ID enthält
    - diese lese ich mittels einer SP aus und erhöhe um 1

    CREATE PROCEDURE sp_GetCurrentID @CurrentID int output
    AS
    begin tran
    select @CurrentID = (select maxid from tblmaxid (holdlock))
    update tblmaxid set maxid = maxid + 1

    commit tran

    return @currentID

    commit tran

    auf diese ID kann ich dann in Delphi ohne Probleme zugreifen.
    spGetMaxID.ExecProc;
    spGetMaxID.GetResults;

    Vielleicht etwas umständlich, aber es funktioniert

    Comment


    • #3
      Wie lautetet in MySQL nach INSERT die neue Datensatznummer?

      Die Funktion
      mysql_insert_id()
      sei Euer Freund. Sie muß unmittelbar nach dem INSERT-Befehl ausgeführt werden und liefert dann den Wert der AUTO_INCREMENT-Spalte zurück; siehe Handbuch auf http://mysql.org.

      Comment


      • #4
        Wenn man schon einen 9 Jahre alten Thread ausgräbt sollte man schon schauen um welches DBMS es sich handelt!

        Comment


        • #5
          Des Weiteren ist das eine Funktion der C API von MySQL
          Christian

          Comment

          Working...
          X