AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FK in die DB speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

FK in die DB speichern?

Ein Thema von OrNEC · begonnen am 16. Jun 2014 · letzter Beitrag vom 17. Jun 2014
Antwort Antwort
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#1

FK in die DB speichern?

  Alt 16. Jun 2014, 14:30
Datenbank: SQLite • Version: 3 • Zugriff über: Lazarus SQLite3Connection
Hallo,

ich habe folgende Frage: ich möchte in einer ComboBox Fahrzeughersteller auswählen oder falls der nicht vorhanden ist - neu mit der ComboBox anlegen. Nun wenn der Hersteller in der ComboBox aufgelistet ist, dann speichere ich einfach die ID des Herstellers als FK in die Haupttabelle. Was ist aber wenn es den Hersteller noch nicht gib? Ich schreibe den Name des Herstellers in die ComboBox und klicke auf OK. Woher bekomme ich die ID des neuen Herstellers, wenn der noch nicht angelegt ist? Etwa erst ma den Hersteller ablegen, dessen ID holen und danach damit den Rest der Daten speichern?

Danke für eure Tipps!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: FK in die DB speichern?

  Alt 16. Jun 2014, 14:58
Einfügen und letzte vergebene ID von Datenbank holen.
Dann Daten in die abhängige Tabelle speichern
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: FK in die DB speichern?

  Alt 16. Jun 2014, 15:15
Etwa erst ma den Hersteller ablegen, dessen ID holen und danach damit den Rest der Daten speichern?
Wie sonst?
wenn es einen Datensatz nicht gibt, gibt's auch keine ID dazu!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#4

AW: FK in die DB speichern?

  Alt 16. Jun 2014, 15:18
Ok, danke!
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: FK in die DB speichern?

  Alt 16. Jun 2014, 23:23
SQLite verfügt über eine Funktion Last Insert RowID. Vielleicht hilft dir die weiter. Ich bin mir sogar ziemlich sicher das sie das tut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: FK in die DB speichern?

  Alt 17. Jun 2014, 00:06
Oder als SELECT
http://stackoverflow.com/questions/3...uery-in-sqlite



Aber eigentlich finde ich die DBMS praktischer, welche die RETURNING-Syntax beim INSERT anbieten. Da kann man dann auch problemlos mehrere Datensätze gleichzeitig anlegen
und sich dann von jedem neuen Datensatz bestimmte Werte zurückgeben lassen.

so ala INSERT INTO distributors (dname) VALUES ('XYZ Widgets') RETURNING did;
Was Folgendem entspricht.
SQL-Code:
INSERT INTO distributors (dname) VALUES ('XYZ Widgets');
SELECT last_insert_rowid();
Aber eigentlich dem
SQL-Code:
INSERT INTO distributors ...;
SELECT did FROM distributors WHERE neue_Datensätze; -- IDs "aller" neuen Datensätze
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Jun 2014 um 00:13 Uhr)
  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 19:24 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