AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Rückmeldung bei Insert mit FireDAC
Thema durchsuchen
Ansicht
Themen-Optionen

Rückmeldung bei Insert mit FireDAC

Ein Thema von thomas.h · begonnen am 28. Okt 2024 · letzter Beitrag vom 31. Okt 2024
Antwort Antwort
thomas.h

Registriert seit: 28. Okt 2024
2 Beiträge
 
#1

Rückmeldung bei Insert mit FireDAC

  Alt 28. Okt 2024, 16:48
Datenbank: MySQL • Version: 10.4.22 • Zugriff über: FireDAC in Delphi 11
Hallo zusammen,

ich verwende FireDAC um mit auf die SQL-Datenbank zu zu greifen, was bisher auch soweit funktioniert.
Bei Änderungen von Daten verwende ich hier Aktuell "TFDQuery".

In einer Tabelle der Datenbank will ich nun einen neuen Datensatz hinzufügen, wobei ich den Wert für die Spalte "ID" NICHT mit schicke. Die Spalte "ID" ist der Primär-Index und hat die Option "Auto-Inc". Demnach wird sie beim Insert Befehl automatisch befüllt?
Wenn ich hier wieder "TFDQuery" verwende funktioniert das hinzufügen der Daten auch ohne Probleme, aber wie bekomme ich den Wert den er mir in die Spalte "ID" eingetragen hat zurück?

Ne Abfrage danach bringt nichts, denn Theoretisch können mehrere Datensätze mit gleichen Werten vorhanden sein, die sich dann nur an der "ID" unterscheiden.

Generell geht es ja, denn bei PHP oder im alten Delphi (noch mit einer anderen Library) habe ich es schon programmiert.
Nur mit FireDAC habe ich es bisher noch nicht benötigt und leider beim Suchen im Netz auch nicht gefunden.

Geändert von TBx (28. Okt 2024 um 17:23 Uhr) Grund: Tipselfehler korrigiert
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Rückmeldung bei Insert mit FireDAC

  Alt 28. Okt 2024, 17:29
Hilft eventuell dashier: GetLastAutoGenValue
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#3

AW: Rückmeldung bei Insert mit FireDAC

  Alt 29. Okt 2024, 14:45
Hallo zusammen,

ich verwende FireDAC um mit auf die SQL-Datenbank zu zu greifen, was bisher auch soweit funktioniert.
Bei Änderungen von Daten verwende ich hier Aktuell "TFDQuery".

In einer Tabelle der Datenbank will ich nun einen neuen Datensatz hinzufügen, wobei ich den Wert für die Spalte "ID" NICHT mit schicke. Die Spalte "ID" ist der Primär-Index und hat die Option "Auto-Inc". Demnach wird sie beim Insert Befehl automatisch befüllt?
Wenn ich hier wieder "TFDQuery" verwende funktioniert das hinzufügen der Daten auch ohne Probleme, aber wie bekomme ich den Wert den er mir in die Spalte "ID" eingetragen hat zurück?
Unterstützt MySQL RETURNING in einem INSERT-Statement? Das wäre normalerweise die beste Lösung für das Problem.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#4

AW: Rückmeldung bei Insert mit FireDAC

  Alt 29. Okt 2024, 15:12
FireDAC unterstützt direkt solche Felder und in der Regel erhält man den Wert in dem entsprechenden Feld nach dem Post-Aufruf. Die nötigen Vorbedingungen sind hier erläutert: https://docwiki.embarcadero.com/RADS...elds_(FireDAC)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#5

AW: Rückmeldung bei Insert mit FireDAC

  Alt 29. Okt 2024, 15:45
Besorgt sich FireDAC dann wirklich den "richtigen" Wert, (z.B. via INSERT RETURNING)
oder holt es sich nur den RECORD im Anschluß nochmal runter? (SELECT)

Jo, viele DB-Frameworks holen sich standardmäßig im RefreshAfterPost mit RefreshRecord den "aktuellen" Datensatz,
WENN es möglich ist ein passendes WHERE zu basteln. (mit einer vorhandenen ID oder einem WHERE auf "alle" bekannten Felder)

Im pgDAC hatten wir schon ein paar Mal das Problem, dass die Automatik nicht funktionierte (vor allem wenn JOINs und Dergleichen beteiligt waren).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#6

AW: Rückmeldung bei Insert mit FireDAC

  Alt 29. Okt 2024, 16:21
Besorgt sich FireDAC dann wirklich den "richtigen" Wert, (z.B. via INSERT RETURNING)
oder holt es sich nur den RECORD im Anschluß nochmal runter? (SELECT)
Das MySQL kein RETURNING unterstützt, aber die Funktion LAST_INSERT_ID() stabil innerhalb einer Connection ist, wird dieses auch verwendet um den AutoInc-Wert zu ermitteln.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
thomas.h

Registriert seit: 28. Okt 2024
2 Beiträge
 
#7

AW: Rückmeldung bei Insert mit FireDAC

  Alt 31. Okt 2024, 10:53
Danke an all.
Ihr habt mir zur Lösung verholfen.

Ich hatte zwar selbst schon nach dem "GetLastAutoGenValue" gesucht, aber nicht gefunden, da ich beim TFDQuery gesucht hatte.
Die Rückmeldung gehört aber zu TFDConnection selbst. Demnach hätte ich es also eine Ebene höher suchen müssen.

  Mit Zitat antworten Zitat
Antwort Antwort

 

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