Datensatz ermitteln nach Insert
-
Hy
ich suche eine Möglichkeit, nach einem Insert-Befehl den eingefügten Datensatz zu ermitteln. Gibt es da eine Möglihkeit? Z.B Cursor oder Info, die man abfragen kann?
Habe schon alles mögliche durchsucht, aber nichts dem entsprechend gefunden.
Bin für jede Hilfe dankbar.
-
Welche Datenbank nutzt du? Wie greifst du auf die Datenbank zu? Welche Programmiersprache nutzt du?
-
Ich arbeite mit MS-SQL und Pervasive. Programmiersprache C++.
Beispiel Adressentabele. In dieser wird eine neue Adresse hinzugefügt.INSERT INTO Adressen( Name, Vorname, Strasse, Ort)
VALUES('Maier', 'Test', 'Mailenweg', 'Testhausen')Nachdem dieser Befehl abgeschickt wurde, möchte ich gerne wieder darauf zugreifen.
Jeder Datensatz hat eine eindeutige ID, die automatisch vergeben wird.Wie erhalte ich nun den richtigen Datensatz. Wenn nur einer an der Datenbank arbeitet könnte man sich auf den letzten Satz positionieren. Wenn mehrere gleichzeitig damit arbeiten stimmt dass dann nicht mehr.
-
Folgendes Vorgehen ist möglich (ich gehe davon aus, du benutzt eine selbstinkrementierende ID/Autowert):
- Transaction mit Isolationslevel, der kein konkurrierendes Insert zulässt, starten.
- Datensatz einfügen
- Höchste ID ermitteln -> es ist die ID des eingefügten Datensatzes
- Transaction abschließen
-
Funktioniert
SELECT @@IDENTITY
mit dem aktuellen SQL Server nicht mehr? Vor ein paar Jahren, als ich mich mal mit dem SQL-Server beschäftigt hatte, hat man damit jedenfalls die zuletzt auf der Connection erzeugte ID rausfinden können (Ist 'ne Weile her, also ohne Gewähr).
-
Vielen Dank erst einmal, habe selber noch einmal im Internet gesucht und folgenden Beitrag dazu gefunden.
http://www.asphelper.de/tip/tip23_id_des_zuletzt_eingefuegten_datensatzes_ermitteln.asp