![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: SQLite4Delphi Wrapper von Tim Anderson
Zwei Fremdschlüssen in einer Tabelle?
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! |
AW: Zwei Fremdschlüssen in einer Tabelle?
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? |
AW: Zwei Fremdschlüssen in einer Tabelle?
Liste der Anhänge anzeigen (Anzahl: 1)
So sieht der Code aus:
Delphi-Quellcode:
Die Fehlermeldung siehe Anlage ))
// 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));'; Mit einem FOREIGN KEY läuft aber alles ok. |
AW: Zwei Fremdschlüssen in einer Tabelle?
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; |
AW: Zwei Fremdschlüssen in einer Tabelle?
Wow... es klappt, danke dir! :thumb:
|
AW: Zwei Fremdschlüssen in einer Tabelle?
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz