Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Fremdschlüssel als Primärschlüssel?

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Bongo, 7 September 2014.

  1. Bongo

    Bongo Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru


    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.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  4. Bongo

    Bongo Benutzer

    Alles klar.

    War die falsche Engine. Habe ich völlig ausser Acht gelassen.

    Vielen, vielen Dank für die Hilfe.

    Gruß
    Kai
     
  5. akretschmer

    akretschmer Datenbank-Guru

    *Smile*
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden