AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wie kommt man an die ID des eingefügten Eintrages

Wie kommt man an die ID des eingefügten Eintrages

Ein Thema von kagi3624 · begonnen am 29. Jul 2021 · letzter Beitrag vom 31. Jul 2021
Antwort Antwort
Seite 1 von 3  1 23   
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 10:58
Datenbank: PostgreSQL • Version: 9.1.9 • Zugriff über: TZQuery
Hallo, mit dem SQL Statement

Code:
INSERT INTO MYTABLE (first, second, last) values (val1, val2, val3) returning ID;
kann ich mir die ID des erzeugten Eintrages ausgeben lassen, zumindest zeigt es der DBeaver sofort an. Wie komme ich über TZQuery von Zeos in Delphi an die ID? Die Komponente ist von 2006, vielleicht kann man es damit garnicht?

Geändert von kagi3624 (29. Jul 2021 um 12:31 Uhr)
  Mit Zitat antworten Zitat
tewes

Registriert seit: 31. Jan 2007
25 Beiträge
 
#2

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 11:01
Typischerweise (z.B. MySQL):
SELECT LAST_INSERT_ID();
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 11:10
Typischerweise (z.B. MySQL):
SELECT LAST_INSERT_ID();
Aber das ist doch schon in dem insert Statement schon drin mit dem return ID, vielleicht bin ich auch falsch hier in diesem Subforum?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 11:11
Das RETURNING liefert doch ein Ergebnis, genau wie eine SELECT-Query. Bekommst du da nichts zurück?
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 11:18
Das RETURNING liefert doch ein Ergebnis, genau wie eine SELECT-Query. Bekommst du da nichts zurück?
Also, wenn ich das Statement im Delphi code ausführe mit der TZQuery Komponente, dann bekomme ich den Eintrag auch in die Datenbank, und es gibt auch keine Fehler, ich weiß aber nicht wie ich an die ID des eingefügten Eintrags komme. Ich dachte es ist ja schon irgendwie drin in der Query abgespeichert und ich muss es nur irgendwie abholen. So wenn man normal ein Select statement hat, würde man ja sowas haben:

Code:
i := zQuery.FieldByName('ID').AsInteger;
Hier wird mir aber gesagt, dass so ein Feld nicht existiert nach dem ausführen des Statements.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 11:22
Wie wäre es mal mit etwas mehr Code?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 11:26
Wie wäre es mal mit etwas mehr Code?
Code:
          aQuery.Close;
          aQuery.SQL.Clear;
          aQuery.SQL.Text := 'INSERT INTO MYTABLE (first, second, last) values (:val1, :val2, :val3) returning ID';
          aQuery.ParamByName('val1').AsInteger := 4;
          aQuery.ParamByName('val2').AsString  := 'bla';
          aQuery.ParamByName('val3').AsInteger := 100;
          aQuery.ExecSQL; //bis hier her funktioniert es

          i := aQuery.FieldByName('ID').AsInteger; // Feld nicht gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 11:47
Versuch mal
aQuery.Open; statt
aQuery.ExecSQL;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ron67

Registriert seit: 10. Sep 2018
Ort: Großraum Nürnberg
13 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 12:08
Ich kenne das so:

letzteId := dmMain.connection.GetLastAutoGenValue('id');
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Wie kommt man an die ID des eingefügten Eintrages

  Alt 29. Jul 2021, 12:13
Gibt es das unter ZEOS auch? Ich kenne es so nur bei FireDAC.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz