AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zwei Fremdschlüssen in einer Tabelle?

Zwei Fremdschlüssen in einer Tabelle?

Ein Thema von AlexII · begonnen am 22. Nov 2012 · letzter Beitrag vom 22. Nov 2012
Antwort Antwort
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Zwei Fremdschlüssen in einer Tabelle?

  Alt 22. Nov 2012, 11:11
Datenbank: SQLite • Version: 3 • Zugriff über: SQLite4Delphi Wrapper von Tim Anderson
Zwei Fremdschlüssen in einer Tabelle? Ist das erlaubt? Normal schon, aber meine SQLite DB lässt das irgendwie nicht zu... hatte mal jemand auch so ein Problem?

Danke!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.174 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Zwei Fremdschlüssen in einer Tabelle?

  Alt 22. Nov 2012, 11:16
Bei SQL-Statements ist oft die Glaskugel in wartungsmodus

Wie schaut dein SQL-DDL-Code aus mit dem du die Tabelle erstellst?
Welche Fehlermeldung bekommst du?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Zwei Fremdschlüssen in einer Tabelle?

  Alt 22. Nov 2012, 11:22
So sieht der Code aus:

Delphi-Quellcode:
// Tabelle autor anlegen
sSQL4 := 'CREATE TABLE autor ([idautor] INTEGER PRIMARY KEY NOT NULL,';
sSQL4 := sSQL4 + '[titel] VARCHAR (255),';
sSQL4 := sSQL4 + '[fk_nachname_id] INTEGER, FOREIGN KEY(fk_nachname_id) REFERENCES nachname(idnachname),';
sSQL4 := sSQL4 + '[fk_vorname_id] INTEGER, FOREIGN KEY(fk_vorname_id) REFERENCES vorname(idvorname));';
Die Fehlermeldung siehe Anlage ))

Mit einem FOREIGN KEY läuft aber alles ok.
Miniaturansicht angehängter Grafiken
screenshot.png  
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.445 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Zwei Fremdschlüssen in einer Tabelle?

  Alt 22. Nov 2012, 11:59
Fremdschlüssel ohne Felder in der Tabelle (bzw. Schlüsselname = Feldname), ist das in diesem SQL-Dialekt möglich?

Ich würde das so aufbauen:
Code:
CREATE TABLE autor (
  [idautor] INTEGER PRIMARY KEY NOT NULL,
  [titel] VARCHAR (255),
  [nachname_id] INTEGER,
  [vorname_id] INTEGER);

ALTER TABLE autor ADD CONSTRAINT fk_nachname_id FOREIGN KEY (nachname_id) REFERENCES nachname(idnachname) ON UPDATE CASCADE;
ALTER TABLE autor ADD CONSTRAINT fk_vorname_id FOREIGN KEY (vorname_id) REFERENCES vorname(idvorname) ON UPDATE CASCADE;
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Zwei Fremdschlüssen in einer Tabelle?

  Alt 22. Nov 2012, 12:09
Wow... es klappt, danke dir!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Zwei Fremdschlüssen in einer Tabelle?

  Alt 22. Nov 2012, 15:19
Kenn den SQLLite ja auch nicht, aber vllt. hätte man wie beim Primary Key keine Kommas machen dürfen? Oder statt wie in Blubs Lösung ALter Tables hinterherzuschieben, kann man die Foreign_Key definitionen (jetzt mit Komma getrennt) auch nachdem alle Felder definiert wurden ans Create-Statemant dranhängen. Wär zumindest in Oracle so.
Ralph
  Mit Zitat antworten Zitat
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 20:08 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