![]() |
Datenbank: mysql • Version: 8.0.15 • Zugriff über: MyDAC
Autoincwert zurück bekommen
Hallo die Gemeinde,
ich stehe hier irgendwie wie ein Ochs vorm Berg und sehe den Wald vor lauter Bäumen nicht. Ich mache ein query.insert - es werden auch alle Werte eingetragen. Nur die ID (unique, autoinc) bekomme ich nicht ausgelesen. Auch nicht nach query.post :?::?::?: Wie kann ich diesen Wert - am liebsten direkt nach query.insert - bekommen? also in der Form: meinwert := queryID.asInteger; beste Grüße aus dem Odenwald mcinternet |
AW: Autoincwert zurück bekommen
SQL-Code:
select LAST_INSERT_ID() from ...
|
AW: Autoincwert zurück bekommen
Zitat:
Greift das vor dem qry.post oder danach? Gruss mcinternet |
AW: Autoincwert zurück bekommen
Danach. Liefert immer die letzte ID einer Sitzung.
![]() |
AW: Autoincwert zurück bekommen
@mkinzler
Vielen lieben Dank :thumb::thumb: Problem ist damit gelöst *hauvorKopp* :roll::roll: Beste Grüße aus dem Odenwald mcinternet |
AW: Autoincwert zurück bekommen
Etwas eleganter ist doch
Code:
Sherlock
insert into table...returning autoinc_field
|
AW: Autoincwert zurück bekommen
Zitat:
|
AW: Autoincwert zurück bekommen
Ich muss ja gestehen ich bin kein Fan von Funktionen wie LAST_INSERT_ID().
Dabei ist es egal welche Datenbank das ist. Folgende Frage sollte man sich stellen: Was passiert wenn mehrere Datensätze eingefügt werden? Denn INSERT aus eine SELECT kann es. Was passiert wenn ein INSERT Trigger auslöst wird, welcher einen weiteren Datensatz in eine andere Tabelle einträgt. Welche ID bekommt man dann zurück? Daher verfolge ich immer strikt den Ansatz (beim MSSQL) das ich die OUTPUT Option bei INSERT nutze. Das liefert mir dann ein RESULTSET zurück, was wirklich in meiner Tabelle angelegt wurde und dessen IDs. |
AW: Autoincwert zurück bekommen
Zitat:
vielen Dank beste Grüße mcinternet |
AW: Autoincwert zurück bekommen
Last_insert_id() könnte theoretisch auch die falsche ID zurückliefern, da das "Holen" der ID ja nicht innerhalb der Abfrage erfolgt.
das returning von PosGresSQL/FireBird/... liefert den Wert als Teil der Abfrage zurück. OUTPUT von MSSQL liefert sogar wohl den kompletten Datensatz. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz