AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Autoincwert zurück bekommen

Autoincwert zurück bekommen

Ein Thema von mcinternet · begonnen am 31. Jul 2019 · letzter Beitrag vom 5. Aug 2019
Antwort Antwort
Seite 1 von 2  1 2   
mcinternet

Registriert seit: 22. Apr 2010
Ort: Odenwald
193 Beiträge
 
Delphi 10.3 Rio
 
#1

Autoincwert zurück bekommen

  Alt 31. Jul 2019, 17:17
Datenbank: mysql • Version: 8.0.15 • Zugriff über: MyDAC
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
Jörg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Autoincwert zurück bekommen

  Alt 31. Jul 2019, 17:21
select LAST_INSERT_ID() from ...
Markus Kinzler
  Mit Zitat antworten Zitat
mcinternet

Registriert seit: 22. Apr 2010
Ort: Odenwald
193 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Autoincwert zurück bekommen

  Alt 31. Jul 2019, 17:27
select LAST_INSERT_ID() from ...

Greift das vor dem qry.post oder danach?

Gruss

mcinternet
Jörg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Autoincwert zurück bekommen

  Alt 31. Jul 2019, 17:32
Danach. Liefert immer die letzte ID einer Sitzung.

https://www.devart.com/mydac/docs/de...t.insertid.htm
Markus Kinzler
  Mit Zitat antworten Zitat
mcinternet

Registriert seit: 22. Apr 2010
Ort: Odenwald
193 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Autoincwert zurück bekommen

  Alt 31. Jul 2019, 17:39
@mkinzler

Vielen lieben Dank

Problem ist damit gelöst *hauvorKopp*

Beste Grüße aus dem Odenwald

mcinternet
Jörg
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Autoincwert zurück bekommen

  Alt 1. Aug 2019, 08:52
Etwas eleganter ist doch
Code:
insert into table...returning autoinc_field
Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Autoincwert zurück bekommen

  Alt 1. Aug 2019, 08:56
Etwas eleganter ist doch
Code:
insert into table...returning autoinc_field
Sherlock
Wenn das in MySQL funktioniert.
Markus Kinzler
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Autoincwert zurück bekommen

  Alt 1. Aug 2019, 09:13
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.
  Mit Zitat antworten Zitat
mcinternet

Registriert seit: 22. Apr 2010
Ort: Odenwald
193 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Autoincwert zurück bekommen

  Alt 1. Aug 2019, 09:16
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.
@generic: ich bitte da um nähere Erläuterung

vielen Dank


beste Grüße

mcinternet
Jörg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Autoincwert zurück bekommen

  Alt 1. Aug 2019, 09:24
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 15:02 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