![]() |
mySQL - ID eines neuen Datensatzes ermitteln?
Hai,
gibt es eine möglichkeit die ID (autoincrement-Feld) eines neuen Datensatzes bei einem mySQL-Servers zu ermitteln? Ich brauche diese innerhalb meines Programmes. Oder hat jemand einen anderen tipp für mich? Ich könnte natürlich als "ID-Feld" eine GUID verwenden aber das ist ja wohl nicht das ware ;-) |
Re: mySQL - ID eines neuen Datensatzes ermitteln?
Hallo Sharky,
habe dazu folgendes gefunden. Vielleicht hilft es Dir weiter. Zitat:
|
Re: mySQL - ID eines neuen Datensatzes ermitteln?
In der C-API und der PHP-API gibt es außerdem noch den Befehl mysql_insert_id(). Eine Bibliothek, die auf dieser API aufsetzt, kapselt diese Funktion vielleicht.
|
Re: mySQL - ID eines neuen Datensatzes ermitteln?
Hallo,
Ansonsten könnte man auch einfach einen Timestamp in den Datensatz mit einbauen. Wenn evtl. viele gleichzeitig auf die Datenbank zugreifen, dann könnte es sein, das die Last ID schon die ID eines weiteren eingefügten Datensattzes ist. Wenn Du aber einen Timestamp mit einfügst, und auf diesen Timestamp einen query machst, wird mit der Genauigkeit des Timestamps die wahrscheinlichkeit den falschen Datensatz zu erwischen immer geringer. Gruß, Alexander |
Re: mySQL - ID eines neuen Datensatzes ermitteln?
Zitat:
Zitat:
[edit]Doku-Auszug eingefügt[/edit] |
Re: mySQL - ID eines neuen Datensatzes ermitteln?
Hai ihr,
danke für die Antworten :dancer: Mit diesem Code habe ich es jetzt gelöst:
Delphi-Quellcode:
with DataModule1.ZQuery1 do
begin close; SQL.Clear; SQL.Add('INSERT INTO standorte (bezeichnung) VALUES (:bezeichnung)'); Params[0].AsString := E_Bezeichnung.Text; ExecSQL; Close; SQL.Clear; SQL.Add('SELECT LAST_INSERT_ID()'); Open; i_standortid := Fields[0].AsInteger; Close; end; |
Re: mySQL - ID eines neuen Datensatzes ermitteln?
Gibt es keine Returning-Clause für DML-Statements in mySQL? :gruebel:
Müsste dann ungefähr so aussehen:
Delphi-Quellcode:
With Query Do
Begin SQL.Text := 'INSERT INTO xyz.Table1' + #10 + ' VALUES ( :i_F1, :i_F2)' + #10 + ' RETURNING ID INTO :o_NewID'; Parameters.ParamByName('i_F1').Value := 'Hallo'; Parameters.ParamByName('i_F2').Value := 1; Parameters.ParamByName('o_NewID').Direction := pdOutput; Prepared := True; ExecSQL; NewID := Parameters.ParamByName('o_NewID').Value; End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 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