Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird 3 Rückgabe ID nach Insert durch internen Sequenz Generator (https://www.delphipraxis.net/211052-firebird-3-rueckgabe-id-nach-insert-durch-internen-sequenz-generator.html)

BerndS 21. Jul 2022 08:07

Datenbank: FIREBIRD • Version: 3 • Zugriff über: Fibplus

Firebird 3 Rückgabe ID nach Insert durch internen Sequenz Generator
 
Hallo, mit IBExperts habe ich eine neue Firebird 3 Datenbank Sql Dialekt 3 angelegt. Dabei die Möglichkeit getestet, den internen Sequenzgenerator zum Erzeugen der ID zu verwenden. Daurch erspare ich das Anlegen eines Triggers oder das Erzeugen einer neuen ID aus den Programm heraus.

Nun suche ich nach einer Möglichkeit, die ID nach einem Insert direkt zurück zu bekommen.
Zurzeit mache ich das mit Select Max(...), was aber eine zusätzliche Abfrage erfordert.

Möglicherweise kann das ja FireDAC.

haentschman 21. Jul 2022 08:41

AW: Firebird 3 Rückgabe ID nach Insert durch internen Sequenz Generator
 
Hallöle...8-)

...wie wäre es mit returning <Feldname> ?

https://firebirdsql.org/refdocs/lang...21-insert.html
Delphi-Quellcode:
Variable := Query.FieldByName('RET_<Feldname>').AsInteger
...

:wink:

BerndS 21. Jul 2022 09:02

AW: Firebird 3 Rückgabe ID nach Insert durch internen Sequenz Generator
 
Hallo haentschman
Danke, das funtioniert wunderbar :thumb:.
Returnig habe ich bisher noch nie verwendet. Werde ich mir merken.

Uwe Raabe 21. Jul 2022 10:05

AW: Firebird 3 Rückgabe ID nach Insert durch internen Sequenz Generator
 
Zitat:

Zitat von BerndS (Beitrag 1508999)
Möglicherweise kann das ja FireDAC.

Steht zumindest so in der Doku: Auto-Incremental Fields (FireDAC)
Zitat:

Firebird 3.0: GENERATED BY DEFAULT AS IDENTITY

BerndS 21. Jul 2022 10:46

AW: Firebird 3 Rückgabe ID nach Insert durch internen Sequenz Generator
 
Wenn mal Zeit ist, sollt mal von FIBPlus auf FirDAC umgesellt werden. Aber dass ist nicht an einem Tag gemacht.

Was das Returning betrifft hat das TpFIBDataSet noch einen BUG in AutoGenerateSQLText, da hier AutoUpdateOptions.UseReturningFields nicht berücksichtigt wurde.
Das konnte ich aber noch korrigieren, so dass hier nach dem Post die ID im Grid angezeigt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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 by Thomas Breitkreuz