Fremdschlüssel als Primärschlüssel?

Bongo

Benutzer
Beiträge
8
Hallo zusammen.

Ich habe zwei Tabellen erstellt (Kontenplan u. Konten). Der Primärschlüssel von Kontenplan ist KtoNr. Der Primärschlüssel von Konten, soll ebenfalls KtoNr sein, wobei Konten.KtoNr aber auch Fremdschlüssel mit Bezug auf Kontenplan.KtoNr sein soll.

Zwar lässt sich eine Tabelle mit einer solchen Primär-Fremdschlüssel-Kombination erstellen, der Server meckert aber lediglich einen Primärschlüsselverstoß an, nicht aber den gegen den Fremdschlüssel. Der SQL-String zum Anlegen sieht so aus:

CREATE TABLE konten ( KTONR SMALLINT(5) UNSIGNED NOT NULL,
BETRAG FLOAT(7,2) NOT NULL,
PRIMARY KEY(KTONR),
CONSTRAINT KTO_KTO FOREIGN KEY(KTONR) REFERENCES
KTO_PLAN(KTONR) );


Auch, wenn man das jetzt einfach lösen könnte, indem man Kontenplan und Konten vereint, so interessiert mich doch, ob man das so bewerkstelligen kann - ist evtl. weniger aufwendiger.
Kann mir da einer von Euch weiterhelfen?

Gruß
Kai
 
Werbung:
Hallo zusammen.

Ich habe zwei Tabellen erstellt (Kontenplan u. Konten). Der Primärschlüssel von Kontenplan ist KtoNr. Der Primärschlüssel von Konten, soll ebenfalls KtoNr sein, wobei Konten.KtoNr aber auch Fremdschlüssel mit Bezug auf Kontenplan.KtoNr sein soll.

Zwar lässt sich eine Tabelle mit einer solchen Primär-Fremdschlüssel-Kombination erstellen, der Server meckert aber lediglich einen Primärschlüsselverstoß an, nicht aber den gegen den Fremdschlüssel. Der SQL-String zum Anlegen sieht so aus:

CREATE TABLE konten ( KTONR SMALLINT(5) UNSIGNED NOT NULL,
BETRAG FLOAT(7,2) NOT NULL,
PRIMARY KEY(KTONR),
CONSTRAINT KTO_KTO FOREIGN KEY(KTONR) REFERENCES
KTO_PLAN(KTONR) );


Auch, wenn man das jetzt einfach lösen könnte, indem man Kontenplan und Konten vereint, so interessiert mich doch, ob man das so bewerkstelligen kann - ist evtl. weniger aufwendiger.
Kann mir da einer von Euch weiterhelfen?

Gruß
Kai


Ich seh bei Dir keine Fehlermeldung. Egal Works for me:

Code:
test=# create table kontenplan(kto_nr int primary key);
CREATE TABLE
test=*# create table konten (kto_nr int primary key references kontenplan);
CREATE TABLE

Ist aber - wie üblich bei mir - PostgreSQL.
 
Zwar lässt sich eine Tabelle mit einer solchen Primär-Fremdschlüssel-Kombination erstellen, der Server meckert aber lediglich einen Primärschlüsselverstoß an, nicht aber den gegen den Fremdschlüssel.

Was für eine Engine? InnoDB kann FK, MyISAM nicht. Check-Constraints werden zwar z.B. angenommen (von allen Engines), FK-Constraints auch von MyISAM, aber ignoriert. Müll halt. Vermutlich hast Du die Tabelle in MyISAM erstellt - Sondermüll aus dem letzten Jahrtausend.
 
Werbung:
Zurück
Oben