Announcement

Collapse
No announcement yet.

Fremdschlüssel Beziehnung funkt nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fremdschlüssel Beziehnung funkt nicht

    Hallo,

    hab ne MySQL DB laufen und die 3 DB´s "ProfDB" "StudentDB" und "ConnectionDB"

    jetzt möchte ich in der ConnectionDB realsieren das jeder Student bei mehreren Profs "eingetragen" sein kann. Logischerweise auch genau andersrum. Deswegen hab ich Fremdschlüsselbeziehungen zwischen den Dbs eingetragen.

    Dafür hab ich den Code benutzt:

    Code:
    ALTER TABLE ConnectionDB ADD FOREIGN KEY (ProfID) REFERENCES ProfDB(ID) ON UPDATE RESTRICT ON DELETE RESTRICT
    
    ALTER TABLE ConnectionDB ADD FOREIGN KEY (StudentID) REFERENCES StudentDB(ID) ON UPDATE RESTRICT ON DELETE RESTRICT
    wenn ich die beiden Befehle ausführe, nimmt sql sie auch an. (Jeweils ID ist der Primärschlüssel in der DB)

    jetzt hab ich mal einen manuellen Eintrag in die ConnectionDB gemacht, wobei ich aber die Zahlen höher genommen habe als die IDs in den anderen DBs reichen.

    z.b.: StudentDB höchste ID : 8 , ProfDB höchste ID : 10

    manueller Eintrag in die ConnectionDB :

    Code:
    INSERT INTO  `Collobo`.`ConnectionDB` (`ProfID` ,`UserID`)
    VALUES ('11',  '11');
    meine Frage ist jetzt : Wieso knallt es nicht ?!
    in den beiden anderen DBs gibt es keinen Eintrag mit der ID 11 !!

    ich hoffe ihr könnt mir helfen !!

    Gruß
    Zuletzt editiert von wannebeme; 26.11.2009, 17:03.

  • #2
    Hi,

    zum einen ist der Begriff Datenbank falsch. Du hast 3 Tabellen, das ist etwas komplett anderes.
    Dann solltest Du die Backticks weglassen, die brauchst Du nicht.

    Last but not least: Welche Engine verwendest Du? Myisam Tabellen unterstützen keine RI.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      ok sorry, hab da ein paar sachen verwechselt. werd die sachen ausbessern.

      was sind backticks ?!

      ja verwende Myisam. Was muss ich einstellen, damit das ding funkt ?!

      EDIT:

      hab es jetzt geschafft. einfach alle tabellen auf InnoDB umstellen !!!

      Aber eine Frage hab ich noch:

      Wie kann ich verhindern das Eintragungen doppelt getätigt werden ?!
      In der ConnectionList (ehemals ConnectionDB) hab ich jetzt zwei gleiche Einträge:
      Code:
      ProfID	UserID
      10	  1
      10	  6
      10	  6
      ich möchte das verhindern. muss man das im nachhinein immer durchsuchen oder gibt es eine einstellbare funktion ?!

      gruß
      Zuletzt editiert von wannebeme; 26.11.2009, 18:31.

      Comment


      • #4
        was sind backticks ?!
        Das: `

        Wie kann ich verhindern das Eintragungen doppelt getätigt werden ?!
        Du legst einen Unique Index auf die Spalten, die Unique sein sollen.

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          Originally posted by dimitri View Post
          Du legst einen Unique Index auf die Spalten, die Unique sein sollen.
          Dim
          damit kann ich auf jede spalte einzeln ein unique setzen. ich möchte das eine bestimmte konstellation unique ist ...

          geht das ?

          Comment

          Working...
          X